2013-05-09 3 views
2

System.Windows.Input.ICommand 인터페이스는 .NET 4.5에서 Type Forwarded되어 PresentationCore.dll에서 System.dll로 전환되었습니다. 나는이 문제가 : 나는 내가 클래스에 주입하고 속성의 반환 형식으로 사용할 수 있도록 (단지 해상도를 입력, 재산 분사 도움을 필요로하지 않는이 인터페이스를 가져올 수있는 방법Mono.Cecil GetTypeReference to ICommand

  1. 를/가져 오기)?

  2. .NET 4.5가 설치되어 있지 않아서 System.dll에 ICommand 형식이 전달되지 않은 .NET 4 클라이언트에서 결과 어셈블리가 작동하는 것을 어떻게 확인할 수 있습니까?

코드

는 사용자 정의 Fody 직조에 사용하기위한 것입니다.

답변

1

명시 적으로 처리해야합니다.

예를 들어 diff 어셈블리에 존재할 수있는 Action을 찾습니다.

var msCoreLibDefinition = assemblyResolver.Resolve("mscorlib"); 
var msCoreTypes = msCoreLibDefinition.MainModule.Types; 
var systemDefinition = assemblyResolver.Resolve("System"); 
var systemTypes = systemDefinition.MainModule.Types; 
var actionDefinition = msCoreTypes.FirstOrDefault(x => x.Name == "Action"); 
if (actionDefinition == null) 
{ 
    actionDefinition = systemTypes.First(x => x.Name == "Action"); 
}