【问题标题】:C# attribute doesnt apply to method [duplicate]C#属性不适用于方法[重复]
【发布时间】:2014-08-20 12:58:23
【问题描述】:

我有以下 C# 代码

 class Program
{
    [My]
    static void Main(string[] args)
    {
        SomeMethod();
    }

    [My]
    static void SomeMethod()
    {
        Console.WriteLine("1111");
    }
}


public class MyAttribute: Attribute
{
    public MyAttribute()
    {
        MessageBox.Show("enter");
    }
    ~MyAttribute()
    {
        MessageBox.Show("leave");
    }

}

属性 My 仅适用于方法 Main(MyAttribute 的构造函数在进入 Main 方法时执行,而析构函数在离开它们时执行),但不适用于方法 SomeMethod

我需要这样的功能:在某些方法中执行部分代码(启动和终止进程),而不修改它们(我认为,属性可能是最好的决定)。

请帮忙

【问题讨论】:

  • 尝试更改消息框以登录到控制台!
  • 这不是属性的本意。
  • 你想做的不是属性能做什么(至少不是它自己)。属性只是标记方法/类/属性的标记。之后你用它做什么取决于你,但它通常涉及使用反射或 3rd 方库来完成繁重的工作。
  • CodeAccessSecurity 属性可以做你需要的:)

标签: c# custom-attributes


【解决方案1】:

您没有以正确的方式使用属性:

属性应该指示类或类成员的属性,并且在大多数情况下由对象的使用者使用。

属性经常与反射一起使用来获取信息:

System.Attribute[] attrs = System.Attribute.GetCustomAttributes(t);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-14
    • 2020-04-25
    • 1970-01-01
    • 1970-01-01
    • 2015-11-05
    • 2017-11-10
    • 2014-04-01
    相关资源
    最近更新 更多