SO 질문에서 영감을 얻었습니다. Attribute 클래스에는 IsDefined () 메서드에 대한 여러 가지 오버로드가 있습니다 . 어셈블리, 모듈, MemberInfo, ParameterInfo에 적용되는 속성이 포함됩니다. MemberInfo 오버로드에는 PropertyInfo, FieldInfo, EventInfo, MethodInfo, ConstructorInfo가 포함됩니다.
대부분의 AttributeTarget을 처리합니다. 하나의 큰 문제를 제외하고 : Attribute.IsDefined (Type, Type)에 대한 과부하가 없으므로 속성이 클래스에 정의되어 있는지 확인할 수 있습니다. 또는 그 문제에 대한 구조체, 위임 또는 열거.
이것이 실제 문제는 아니지만 Type.GetCustomAttributes ()가 해결할 수 있습니다. 그러나 모든 BlahInfo 유형에도이 유형이 있습니다. 대칭의 부족에 대해 궁금합니다. 왜 이것이 유형에 문제가되는지 손가락을 넣을 수 없습니다. 상속 문제를 추측하는 것이 나에게 설명하지 않습니다. 믹스에 ValueType을 사용하는 것이 리드 일 수 있지만 여전히 이해가되지 않습니다. 나는 “그들은 잊었다”는 구매하지 않습니다.
이 과부하가없는 이유는 무엇입니까?
답변
이 System.Attribute.IsDefined(MemberInfo element, Type attributeType, bool inherit)
있고 System.Type
에서 파생됩니다System.Reflection.MemberInfo
.
.NET 어셈블리의 최상위 컨테이너 인 어셈블리에는 하나 이상의 모듈이 있습니다. 그런 다음 각 모듈에는 유형이 포함되며 유형에는 속성, 메서드 또는 다른 유형 (중첩 유형)과 같은 멤버가있을 수 있습니다. 이유 System.Type
에서 파생 MemberInfo
개체 모델은 다른 유형을 포함하여 컨테이너 모든 것을 회원, 같은 일에 유형 그렇게 할 수있다.