我正在创建一个自定义属性在 C# 中,我想根据属性是应用于方法还是应用于属性来执行不同的操作。起初我想做new StackTrace().GetFrame(1).GetMethod()
在我的自定义属性构造函数中查看什么方法称为属性构造函数,但现在我不确定这会给我带来什么。如果将该属性应用于属性会怎样?会GetMethod()
返回一个MethodBase
该属性的实例?是否有不同的方法来获取在 C# 中应用了属性的成员?
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Property,
AllowMultiple = true)]
public class MyCustomAttribute : Attribute
Update:好吧,我可能问错了问题。在自定义属性类中,如何获取应用了自定义属性的成员(或包含该成员的类)?阿罗诺特建议不要在堆栈中查找应用了我的属性的类成员,但是我还能如何从属性的构造函数中获取此信息呢?
属性提供元数据,但对它们所装饰的事物(类、成员等)一无所知。另一方面,被装饰的东西可以请求它被装饰的属性。
如果您必须知道所装饰事物的类型,则需要将其显式传递给其构造函数中的属性。
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Property,
AllowMultiple = true)]
public class MyCustomAttribute : Attribute
{
Type type;
public MyCustomAttribute(Type type)
{
this.type = type;
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)