리플렉션을 사용하여 특정 속성이 있는 속성 찾기
사용자 정의 속성은 .NET 코드에서 유형과 멤버에 주석을 추가하는 강력한 도구입니다. 때때로 프로그래밍 방식으로 이러한 속성에 대한 정보를 검색해야 합니다. 이 질문은 AllowMultiple 속성이 false로 설정된 MyAttribute라는 특정 사용자 정의 속성이 포함된 공용 속성 목록을 검색하는 데 중점을 둡니다.
제공된 코드는 루프를 사용하여 유형의 속성을 반복합니다. GetCustomAttributes()를 사용하여 사용자 정의 속성이 있는지 확인합니다. 이 접근 방식은 기능적이지만 성능 비용이 수반되는 속성 인스턴스 구체화를 포함합니다.
더 효율적인 접근 방식은 주어진 예제에서 설명한 것처럼 GetProperties() 컬렉션에서 Where() 확장 메서드를 사용하는 것입니다. 답변:
var props = t.GetProperties().Where( prop => Attribute.IsDefined(prop, typeof(MyAttribute)));
이 코드는 속성 인스턴스를 생성하지 않고 멤버에 특정 속성 유형이 있는지 확인하는 Attribute.IsDefined() 메서드를 활용합니다. 람다 표현식은 MyAttribute가 있는 속성만 props 변수로 선택되도록 보장합니다.
이 접근 방식을 활용하면 속성 인스턴스 구체화와 관련된 오버헤드를 방지하여 더 가볍고 성능이 뛰어난 솔루션을 얻을 수 있습니다.
위 내용은 C#에서 특정 사용자 지정 특성을 사용하여 공용 속성을 효율적으로 찾으려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!