通过属性内部的反射获取有关当前属性的信息

本文关键字:属性 信息 反射 内部 获取 | 更新日期: 2023-09-27 18:23:49

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

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