Attributes의 복잡성에 대한 자세한 설명을 찾으려고합니다. 어떤 도움을 주시면 감사하겠습니다.런타임 중에 속성 생성자가 언제 실행됩니까?
이 시점에서, 런타임 중에 속성 생성자가 실행되는 시간을 알고 싶습니다.
- 이 방법
감사를 통해의 경우는 속성을 통해
Attributes의 복잡성에 대한 자세한 설명을 찾으려고합니다. 어떤 도움을 주시면 감사하겠습니다.런타임 중에 속성 생성자가 언제 실행됩니까?
이 시점에서, 런타임 중에 속성 생성자가 실행되는 시간을 알고 싶습니다.
감사를 통해의 경우는 속성을 통해
형식 또는 MemberInfo에서 GetCustomAttributes()를 호출 할 때 생성자가 호출됩니다.
확신 할 수있는 유일한 것은 이전에 호출해야한다는 것입니다. 생성자가 호출 될 정확한 시간은 정의되어 있지 않습니다.
어쨌든, 동작은 지정되지 않았으므로 현재 구현에서 생성자가 호출 될 때마다 의존해서는 안됩니다.
일 - @ 렉스-M의 대답에 주석 정확히 내 지점. –
표준을 읽는 것 (C# 2.0 버전에서 17.3.2)은 지정되지 않았습니다. 메타 데이터에서 인스턴스로 변환하는 방법 만 있습니다.
다른 구현에서 테스트해야 할 수도 있습니다. 지정하지 않으면 다른 방식으로 해석 될 수 있기 때문입니다.
정적 생성자와 비슷합니까? –
아니요, 실제로이 것이 지정되어 있습니다. –
... 주어진 응용 프로그램 도메인에서 최대 한 번 실행됩니다. 정적 생성자의 실행은 응용 프로그램 도메인 내에서 발생하는 다음 이벤트 중 첫 번째에 의해 트리거됩니다. 클래스의 인스턴스가 만들어집니다. 클래스의 모든 정적 멤버가 참조됩니다. –
속성은 유형에 대한 메타 데이터 또는 정보를 저장하는 장식입니다. .Net 프레임 워크는 이러한 종류의 정보를 사용하여 인스턴스를 만들 때 추가 처리를 수행합니다.
이 속성은 다른 클래스에서 요청할 때만 생성되고 Type.GetCustomAttributes()와 같이 생성됩니다. 따라서 사용자 고유의 속성을 생성 한 다음 사용자 정의 속성을 요청할 수도 있습니다.
public class MyOwnAttribute: Attribute {}
은/* 다른 클래스의 어느 시점에서 */
void CheckIfClassIsDecoratedWithMyOwnAttribute()
{
var instance = new MyClass();
if (instance.GetType().GetCustomAttributes(typeof(MyOwnAttribute)))
{
//do whatever you want
}
}
이 문서에 대한 참조를 게시 하시겠습니까, 제발. –
@Sunny 디버거를 통해 실행하고 직접보십시오. –
의미가 있습니다. 좀 더 명확히하기 위해서 : 만약 다른 클래스가 GetCustomAttributes와 생성자의 속성의 GetCustomAttributes 속성을 요구할 때 "생성"되는 클래스에 속성이 있다면, 모든 종류의 작업을 수행해야합니다. –