4

我正在 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;}

有没有办法在添加属性时获取这些值,还是我必须求助于循环遍历类型中的所有属性并查看哪些属性分配了属性?

提前致谢。

4

1 回答 1

1

没有其他方法可以遍历属性并检查属性。但是您应该能够在一个 Linq 语句中做到这一点。

GetCustomAttributes在类型的GetProperties方法上使用。

如果将所有使用此属性的类标记为接口、公共基类或类属性,则可以优化性能。因此,您可以预取类来迭代所有类型。

于 2013-07-19T09:25:08.010 回答