Что делает ConditionalAttribute для атрибута?
Я знаю что ConditionalAttribute
делает.
Документы говорят, что это также может быть применено к классу, если он получен из Attribute
:
[Conditional("DEBUG")]
public class FooAttribute : Attribute { }
Но как ведет себя этот пользовательский атрибут? (Это вырезано из сборки релиза?)
1 ответ
Комментарий @RicardoPontual дал мне идею.
Я сделал это:
[Conditional("DEBUG")]
public class FooAttribute : Attribute { }
[Foo]
public class Bar { }
Я скомпилировал в режиме отладки и загрузил DLL в ILSpy (это дизассемблер). Вот что я нашел, как и ожидалось:
[Foo]
public class Bar { }
Затем я скомпилировал в режиме выпуска и загрузил эту DLL в ILSpy. Вот что я нашел:
public class Bar { }
Bar
класс не был украшен на этот раз!
Таким образом, ответ заключается в том, что когда вы украшаете некоторый пользовательский атрибут с Conditional
то сам атрибут становится таким же условным.
Это поведение, которое я хотел. Я изначально думал, что происходит от ConditionalAttribute
, но он запечатан. Вместо этого вам нужно украсить свой собственный атрибут.