是否有一种方法可以在运行时获得属性的声明方法/属性?
本文关键字:方法 属性 运行时 声明 一种 是否 | 更新日期: 2023-09-27 18:18:21
好的,考虑以下场景:
public class Foo()
{
[FooProperty]
public int Blah { get { .... } }
...
}
[AttributeUsage(AttributeTargets.Property)]
public class FooPropertyAttribute: Attribute
{
public FooPropertyAttribute()
{
//Is there any way to get at runtime a PropertyInfo of the declaring property 'Foo.Blah'?
}
...
}
我知道这可能不是一个好主意,但最近,当原型一些类,问题出现了,我很好奇知道这是否可能
既然你必须主动寻找这些属性,你可以做任何你想做的。
例如,如果你有这样的代码:
foreach (var propertyInfo in type.GetProperties())
{
if (propertyInfo.IsDefined(typeof(FooPropertyAttribute), true))
{
var attr = (FooPropertyAttribute)propertyInfo.GetCustomAttributes(typeof(FooPropertyAttribute), true)[0];
attr.FooMethod(propertyInfo); // <-- here
}
}
然后你可以看到,你可以传递属性info对象给它。
除此之外,没有,没有。net的内置属性系统。
PostSharp之类的东西可能会支持它,但这是一个完全不同的问题。