我有一个自定义属性,我想将它应用于枚举类型本身,但是我无法确定正确的路径以获取正确的* Info以显示属性。
像这样的东西
[AttributeUsage(AttributeTargets.All, AllowMultiple = true, Inherited = true)]
public class MyCustAttribute : Attribute {}
[MyCust()]
[MyCust()]
[MyCust()]/*...and so on...*/
public enum MyEnumType{}
我熟悉从枚举值反映说明DescriptionAttribute的更“习惯”的方法。我一直这样做,没问题。如下面的类型情况。
public enum MyEnumType {
[Description("My First Value")]
First,
[Description("My Second Value")]
Second,
}
我确信这很明显,但我不知道这是否可能。
答案 0 :(得分:6)
您可以迭代enum
类型的自定义属性,如下所示:
static void Main(string[] args)
{
var attributes = typeof(MyEnumType).GetCustomAttributes(typeof(MyCustAttribute), false);
foreach (MyCustAttribute attribute in attributes)
Console.WriteLine("attribute: {0}", attribute.GetType().Name);
Console.ReadKey();
}
在此示例中,GetCustomAttributes
返回object
数组。我们使用foreach
循环的能力来扩展我们知道数组元素包含的类型,因为这就是我们要求的:MyCustAttribute
。
由于您的自定义属性还没有任何有趣的内容,我们只选择打印出该类型的名称。你显然会用你真实的类型实例做一些更令人兴奋的事情。