我似乎无法使用以下代码读取自定义枚举属性:
public class CustomAttribute : Attribute
{
public CultureAttribute (string value)
{
Value = value;
}
public string Value { get; private set; }
}
public enum EnumType
{
[Custom("value1")]
Value1,
[Custom("value2")]
Value2,
[Custom("value3")]
Value3
}
...
var memInfo = typeof(CustomAttribute).GetMember(EnumType.Value1.ToString());
// memInfo is always empty
var attributes = memInfo[0].GetCustomAttributes(typeof(CustomAttribute), false);
我不确定我是否只是遗漏了一些明显的东西,或者在Mono / MonoMac中读取自定义属性时遇到了问题。
答案 0 :(得分:1)
您应该在具有给定成员的类型上调用GetMember()
:)在这种情况下,EnumType
不是CustomAttribute
。
还修复了我认为属性构造函数的复制粘贴错误。
完整的工作测试代码(你应该知道23k代表,我们更喜欢这些代表我们必须完成的半成品程序;)):( / p>
using System;
public class CustomAttribute : Attribute
{
public CustomAttribute (string value)
{
Value = value;
}
public string Value { get; private set; }
}
public enum EnumType
{
[Custom("value1")]
Value1,
[Custom("value2")]
Value2,
[Custom("value3")]
Value3
}
class MainClass
{
static void Main(string[] args)
{
var memInfo = typeof(EnumType).GetMember(EnumType.Value1.ToString());
Console.WriteLine("memInfo length is {0}", memInfo.Length);
var attributes = memInfo[0].GetCustomAttributes(typeof(CustomAttribute), false);
Console.WriteLine("attributes length is {0}", attributes.Length);
}
}
请参阅in operation。