C# 尝试实现Fody加载项时发生强制转换错误
我正试图学习如何编写一个Fody模块,并遵循,其中包括一个演练 示例外接程序用于向名称以DTO结尾的任何类添加接口。他使用了来自Fody源代码的基本插件,并更改了执行方法,如下所示C# 尝试实现Fody加载项时发生强制转换错误,c#,mono,fody,compile-time-weaving,C#,Mono,Fody,Compile Time Weaving,我正试图学习如何编写一个Fody模块,并遵循,其中包括一个演练 示例外接程序用于向名称以DTO结尾的任何类添加接口。他使用了来自Fody源代码的基本插件,并更改了执行方法,如下所示 public void Execute() { typeSystem = ModuleDefinition.TypeSystem; TypeDefinition ifDef = new TypeDefinition("MarkerInterfaces", "DtoMarkerInterface", TypeA
public void Execute() {
typeSystem = ModuleDefinition.TypeSystem;
TypeDefinition ifDef = new TypeDefinition("MarkerInterfaces", "DtoMarkerInterface", TypeAttributes.Interface | TypeAttributes.Public);
ModuleDefinition.Types.Add(ifDef);
IEnumerable<TypeDefinition> dtos = ModuleDefinition.GetTypes().Where(t => t.Name.EndsWith("DTO"));
foreach (TypeDefinition dto in dtos) {
dto.Interfaces.Add(ifDef);
}
}
然而,当我这样做时,我在最后一行代码中得到一个编译器错误
参数1:无法从“Mono.Cecil.TypeDefinition”转换为“Mono.Cecil.InterfaceImplementation”
有人知道问题出在哪里吗?我在这方面经验不足,不知道该怎么做。试试看
dto.Interfaces.Add(new InterfaceImplementation(ifDef));
谢谢,就这样做了:对不起,我本来打算这样做的,但后来发现它并没有像我预期的那样工作。我只是还没来得及看。别担心,你会明白的:原来代码是有效的,而不是测试!再次感谢你的帮助