.NET에서 유형이 확인되고 인스턴스화되는 방식을 변경할 수 있나요?

StackOverflow https://stackoverflow.com/questions/76864

  •  09-06-2019
  •  | 
  •  

문제

일부 언어에서는 "new" 키워드를 재정의하여 유형이 인스턴스화되는 방식을 제어할 수 있습니다..NET에서는 이 작업을 직접 수행할 수 없습니다.그러나 "유형을 찾을 수 없음" 예외를 처리하고 해당 유형을 "새로" 만든 사람이 폭발하기 전에 유형을 수동으로 해결할 수 있는 방법이 있는지 궁금합니다.

저는 XML 기반 파일을 읽고 그 안에 설명된 유형을 인스턴스화하는 직렬 변환기를 사용하고 있습니다.나는 직렬 변환기를 제어할 수 없지만 자체 appdomain 호스트를 작성하지 않고 프로세스와 상호 작용하고 싶습니다.

대체 직렬화 방법을 제안하지 마십시오.

도움이 되었습니까?

해결책

AppDomain.CurrentDomain.AssemblyResolve에 이벤트 핸들러를 연결하여 프로세스에 참여할 수 있습니다.

EventHandler는 ResolveEventArgs에 전달된 유형을 담당하는 어셈블리를 반환해야 합니다.

자세한 내용은 다음에서 확인할 수 있습니다. MSDN

다른 팁

또한 AppDomain.TypeResolve 재정의할 수 있는 이벤트입니다.

선택이 깨지지 않았습니다 이를 다르게 보는 방법에 대해 논의합니다. 결함은 도구가 아닌 설계에 있을 수 있습니다.

나는 다른 일을 하기 위해 "새로움"을 얻으려고 노력하는 것이 잘못된 접근 방식이 될 것이라고 생각합니다.

연산자 오버로딩을 주의해서 사용해야 하는 이유를 생각해 보십시오. 언어 의미 체계에 숨겨진 변경 사항이 있을 때 직관적이지 않고 디버그하기 어렵습니다.

한 걸음 물러나 더 큰 맥락에서 디자인을 살펴보고 문제를 해결하기 위한 보다 합리적인 방법을 찾으십시오.

Reflection 및 Activator 클래스를 확인해야 합니다.이를 통해 문자열에서 개체를 만들 수 있습니다.물론 개체는 액세스 권한이 있는 어셈블리 중 하나에 있어야 합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top