Получение определенного экземпляра атрибута с использованием ConditionString
Это может быть глупый вопрос. Я пытаюсь понять концепцию условного атрибута. Моя цель состоит в том, чтобы получить конкретный экземпляр атрибута и в итоге получить исключение 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 ответ
Решение
Ваш класс не имеет 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);
}