@ RicardoPontual Kommentar gab mir eine Idee.
Ich tat dies:
[Conditional("DEBUG")]
public class FooAttribute : Attribute { }
[Foo]
public class Bar { }
I in Debug-Modus kompiliert und geladen, um die DLL in ILSpy (es ist ein Disassembler). Das ist, was ich gefunden, wie erwartet:
[Foo]
public class Bar { }
Dann habe ich in Release-Modus kompiliert und geladen, dass die DLL in ILSpy. Dies ist, was ich gefunden habe:
public class Bar { }
Die Bar
Klasse wurde diesmal nicht eingerichtet!
Also, die Antwort ist, dass, wenn Sie einige benutzerdefinierte Attribute mit Conditional
dekorieren, dann wird das Attribut selbst auf die gleiche Weise bedingt.
Das ist das Verhalten, das ich wollte. Ich dachte ursprünglich, von ConditionalAttribute
abzuleiten, aber es ist versiegelt. Stattdessen müssen Sie Ihr benutzerdefiniertes Attribut dekorieren.
Es gibt eine andere Frage über: http://StackOverflow.com/a/1412838/4730201 –
@RicardoPontual Nein, das das Problem nicht behandelt. Ich möchte wissen, was es tut, wenn es speziell auf ein "Attribut" angewendet wird. –
[Anwenden von ConditionalAttribute auf ein Attribut gibt an, dass das Attribut nicht an Metadaten ausgegeben werden soll, wenn das Symbol für bedingte Kompilierung nicht definiert ist.] (Http://msdn.microsoft.com/en-us/library/system.diagnostics.conditionalattribute (v = vs.110) .aspx) Was bedeutet das? –