使用ConditionString获取特定的属性实例

时间:2014-02-01 15:09:58

标签: c# c#-4.0 getcustomattributes conditional-attribute

这可能是一个愚蠢的问题。我试图理解条件属性的概念。我的目标是获取一个特定的属性实例,最终得到NullReferenceException而不是输出“CONDITION1”。

class Program
    {
    private static void Main(string[] args)
    {
        //Getting a specific attribute instance
        ConditionalAttribute conditionalAttribute =
            (ConditionalAttribute) Attribute.GetCustomAttribute(typeof (Class1), typeof (ConditionalAttribute));
        string condition = conditionalAttribute.ConditionString;
        Console.WriteLine(condition);
        Console.ReadLine();
    }

    public class Class1
    {
        [Conditional("CONDITION1"), Conditional("CONDITION2")]
        private static void MyMethod()
        {
            Console.WriteLine("Mymethod");
        }
    }

    }

我希望我在GetCustomAttribute中使用正确的属性。有人能指出哪里出错了吗?

提前致谢。

1 个答案:

答案 0 :(得分:1)

您的班级没有Conditional属性,您的方法标有Conditional属性。因此您需要先获取Method,然后获取属性

var attributes = typeof(Class1)
                .GetMethod("MyMethod", BindingFlags.NonPublic | BindingFlags.Static)
                .GetCustomAttributes().OfType<ConditionalAttribute>()
                .OrderBy(a => a.ConditionString);
foreach (var at in attributes)
{
     Console.Write(at.ConditionString);
}