这可能是一个愚蠢的问题。我试图理解条件属性的概念。我的目标是获取一个特定的属性实例,最终得到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中使用正确的属性。有人能指出哪里出错了吗?
提前致谢。
答案 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);
}