我正在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;}
是否有任何方法可以在添加属性时获得这些值,或者我是否必须循环使用类型中的所有属性,看看哪些属性被分配了属性?
提前谢谢。
没有其他方法可以迭代属性并检查属性。但你应该能够在林克的一句话中做到这一点。
在类型的GetProperties
方法上使用GetCustomAttributes
。
如果标记所有使用此属性的类都由接口、公共基类或类属性标记,则可以优化性能。因此,您可以预取类来迭代所有类型。