C#의 리플렉션 및 사용자 지정 특성을 사용하여 일련의 형식을 중앙 관리 클래스에 쉽게 등록 할 수 있습니다. 즉, 정적 메서드를 사용하여 문자열 키를 가져오고 연관된 유형에 대한 적절한 메소드/매개 변수). 여기 다른 질문들과 다른 곳에서 몇 곳을 보면서, 그렇게하는 가장 좋은 방법은 어셈블리의 모든 공개 유형을 반복하는 것입니다. (라이브러리가되기위한 것이므로) 각 유형에 적절한 유형이 있는지 확인하십시오 속성을 사용하여 기본 사전에 관련 값을 추가하십시오. 반성과 반복은 분명히 천천히 진행될 것입니다.하지만 한번만 발생해야하기 때문에 함께 살 수 있습니다..NET 표준에서 Type의 사용자 지정 특성 검색
불행히도 유형에서 속성을 가져 오는 방법을 알 수 없습니다. 메서드와 어셈블리의 경우 System.Reflection.Extensions
에있는 CustomAttributeExtensions.GetCustomAttribute<MyAttribute>(base)
을 사용할 수 있지만 Type
에 대한 과부하는 제공하지 않습니다. this question에서 사용 된 Assembly.GetCustomAttribute(Assembly, Type)
및 .IsDefined(...)
에 대해서도 동일합니다. Othersuggestionsthe documentation에서 Type
자체의 메서드를 사용하면 mscorelib.dll
에서로드되는 것처럼 보이지만 참조를 추가 한 후에도 Intellisense에 나타나지 않는 것 같아 .dll과 상호 작용하는 방법을 모르겠습니다. 어쨌든 (예를 들어, 임의의 플랫폼에서 실행할 수있는 능력이 줄어든다.)
분명하지 않은 것이 있습니까? 아니면 Attribute
을 Type
에서 다시 열 수 있습니까?
당신이') (해당 GetCustomAttributes'호출 할 방법의 예를 보여줄 수보십시오? –
@ RenéVogt'CustomAttributeExtensions.GetCustomAttribute (base)'이 ('base'는 테스트하려고했던'Type')에 대한 것이 었습니다. 그러나 더 나은 푯말을 붙여 조금 더 많은 컨텍스트를 포함 할 수 있음을 인정합니다. 어느 쪽이든, 아래의 Connell의 대답이 효과가있었습니다. –
WovenTales