나는 ConditionalAttribute
이 무엇인지 압니다.속성에 대한 ConditionalAttribute의 기능은 무엇입니까?
워드 프로세서가 Attribute
에서 파생 않다면, 그것은 또한 클래스에 적용 할 수있는 말 :
[Conditional("DEBUG")]
public class FooAttribute : Attribute { }
을하지만 행동이 정의하는 방법을 속성합니까? (릴리스 빌드에서 제거 되었습니까?)
나는 ConditionalAttribute
이 무엇인지 압니다.속성에 대한 ConditionalAttribute의 기능은 무엇입니까?
워드 프로세서가 Attribute
에서 파생 않다면, 그것은 또한 클래스에 적용 할 수있는 말 :
[Conditional("DEBUG")]
public class FooAttribute : Attribute { }
을하지만 행동이 정의하는 방법을 속성합니까? (릴리스 빌드에서 제거 되었습니까?)
@ RicardoPontual의 의견은 나에게 아이디어를 제공했습니다.
내가이 짓 : 디버그 모드 컴파일[Conditional("DEBUG")]
public class FooAttribute : Attribute { }
[Foo]
public class Bar { }
I, 그리고 ILSpy (가 디스어셈블러의)에서 DLL로드. 이 예상대로 내가 발견 무엇 :
[Foo]
public class Bar { }
가 그럼 난
릴리스 모드 컴파일 및 ILSpy에 그 DLL을로드. 이것은 내가 찾은 것입니다 :
public class Bar { }
Bar
클래스가이 시간을 장식되지 않았습니다!
그래서 사용자 정의 속성을 Conditional
으로 꾸밀면 그 속성 자체가 같은 방식으로 조건부가됩니다.
그게 내가 원하는 행동입니다. 나는 처음에 ConditionalAttribute
에서 파생 된 것으로 생각했지만 봉인되었습니다. 대신 사용자 정의 속성을 꾸밀 필요가 있습니다.
위대한, 테스트는 질문에 대답했다. 어셈블리가 컴파일 또는 릴리즈되었는지 여부에 따라 런타임에 로직을 구현하고 사용자 정의 속성의 존재 여부를 검사하는 것과 같은 유용한 것들을 상상해보십시오. 'if (typeof (MyType) .IsDefined (typeof (MyCustomAttribute)), false))' –
또 다른 질문이 있습니다. http://stackoverflow.com/a/1412838/4730201 –
@RicardoPontual 그게 문제를 해결하지 못합니다. 나는 그것이 특별히'Attribute'에 적용될 때 무엇을하는지 알고 싶다. –
[ConditionalAttribute를 특성에 적용하면 조건부 컴파일 기호가 정의되어 있지 않으면 메타 데이터에 특성이 생성되지 않아야 함을 나타냅니다.] (http://msdn.microsoft.com/en-us/library/system.diagnostics.conditionalattribute (v = vs.110) .aspx) 그게 무슨 뜻입니까 ?? –