2013-05-09 50 views
2

System.Windows.Input.ICommand接口從PresentationCore.dll版本轉換爲System.dll版本時,從.NET 4.5開始已經Type轉發。我有2個問題:Mono.Cecil GetTypeReference to ICommand

  1. 如何導入這個接口,所以我可以使用它,因爲我注入一類的屬性的返回類型(不需要財產注射的幫助,只要輸入分辨率/輸入)?

  2. 如何確保生成的程序集能夠在未安裝.NET 4.5的.NET 4客戶端上工作,並且因此沒有ICommand類型轉發給System.dll?

該代碼旨在用於定製Fody編織器。

回答

1

你必須明確處理它。

例如找到Action它可以存在於diff組件中。

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"); 
}