Получение определенного экземпляра атрибута с использованием 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);
}
Другие вопросы по тегам