【问题标题】:Mono.Cecil GetTypeReference to ICommandMono.Cecil GetTypeReference 到 ICommand
【发布时间】:2013-05-14 14:37:06
【问题描述】:
System.Windows.Input.ICommand 接口在 .NET 4.5 中已从 PresentationCore.dll 中的类型转发到 System.dll。我有两个问题:
如何导入此接口,以便可以将其用作要注入到类中的属性的返回类型(不需要属性注入方面的帮助,只需类型解析/导入)?
我如何确保生成的程序集可以在未安装 .NET 4.5 且没有将 ICommand 类型转发到 System.dll 的 .NET 4 客户端上运行?
该代码旨在用于自定义Fody weaver。
【问题讨论】:
标签:
.net
aop
mono.cecil
fody
【解决方案1】:
你必须明确地处理它。
例如查找可以存在于差异程序集中的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");
}