인스턴스 나 인스턴스 검사와 같이 객체 또는 클래스 생성과 같은 복잡한 리플렉션을 사용하기가 더 편한 라이브러리 (예 : 오픈 소스 프로젝트 등)가 있습니까?쉬운 동적 리플렉션을위한 C# 라이브러리
감사
인스턴스 나 인스턴스 검사와 같이 객체 또는 클래스 생성과 같은 복잡한 리플렉션을 사용하기가 더 편한 라이브러리 (예 : 오픈 소스 프로젝트 등)가 있습니까?쉬운 동적 리플렉션을위한 C# 라이브러리
감사
시도 ... 반사보다 많은 다른 흥미로운 물건을 할 수있는 이는 LinFu 라이브러리를 사용할 수 있습니다 그것은
는 MS 단위 테스트 어셈블리는이 개인 예/유형에 액세스 할 수 있도록 PrivateObject 및 PrivateType 회원 꽤 똑바로.
비록이 외부 테스트를 사용하는 것은 무서운, 끔찍한 생각입니다 ... –
이것은 리플렉션을 통해 할 수있는 것에 대한 단순한 래퍼이므로 실제로 특별한 것은 없지만 인스턴스에서 비공개 항목을 혼동해서는 안됩니다./types. –
내 의견으로는 반사가 지금보다 더 쉽게 사용할 수 있다고 생각하지 않습니다. 거의 모든 핵심 기능이 Type 클래스 내에 포함됩니다. 작동 원리에 대해 배우려면 시간을 들여야하며 그 위에 또 다른 불필요한 레이어가 필요하지 않습니다.
특히, 다음과 같이 초기화되지 객체를 생성으로 '복잡한 일을'수행 할 수 있습니다
// Instantiates an uninitialized object of the specified type.
var newObject = (MyObject)FormatterServices.GetUninitializedObject(elementType);
글쎄, 리플렉션에 의해 얻어진 정보 중 일부 캐싱이 좋을 것입니다. 리플렉션은 꽤 느리고 동일한 'MethodInfo' 또는'FieldInfo's를 반복적으로 검색하는 것이 리소스 돼지입니다. (나는 당신의 대답이 꽤 오래되었다는 것을 알고 있습니다 ...) –
은 거기에 몇 가지 흥미로운 ReflectionHelpers을 수 있습니다.
반사는 정의가 어렵습니다. 이것은 전체 객체 구조 위에 놓인 간접적 인 수준입니다. 나는 그 힘을 제한하지 않고 어떻게 더 쉽게 만들 수 있을지 잘 모르겠습니다.
리플렉션이 어려울 경우 .Net의 기본 사항을 완전히 이해하지 못했을 수 있습니다. this과 같은 자습서를 사용해보십시오.
System.Reflection 네임 스페이스의 형식 이외의 다른 의미입니까? –
예, 대부분의 하드 리플렉션 작업을 쉽게 수행 할 수있는 랩퍼와 비슷합니다. – pistacchio
이러한 '어려운 리플렉션 작업'중 일부를 설명해 주시겠습니까? – Trap