我正在用C#创建自定义属性。
所以我有这样的事情:
[AttributeUsage(AttributeTargets.Property)]
public class Something : Attribute
{
public Something
{
Assembly a = Assembly.GetCallingAssembly();
}
}
上面的代码将为我提供调用属性的程序集的程序集名称。
我想知道的是,是否有办法获取添加了属性的属性的名称和类型。举个例子,如果我有:
// This should return System.Int32 and MyString
[Something]
public int MyInt {get; set;}
// This should return me System.String, and MyString
[Something]
public string MyString {get; set;}
在添加属性时是否有任何方法可以获取这些值,或者我是否必须通过类型中的所有属性来循环,并查看哪些属性已分配给它们?
提前致谢。
答案 0 :(得分:1)
没有其他方法可以迭代属性并检查属性。 但你应该能够在一个Linq声明中做到这一点。
在类型的GetCustomAttributes
方法上使用GetProperties
。
如果标记使用此属性的所有类都由接口,公共基类或类属性标记,则可以优化性能。所以你可以预取类而不是迭代所有类型。