找不到枚举自​​定义属性的MemberInfo

时间:2013-06-04 20:59:00

标签: mono monomac

我似乎无法使用以下代码读取自定义枚举属性:

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中读取自定义属性时遇到了问题。

1 个答案:

答案 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