Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 尝试实现Fody加载项时发生强制转换错误_C#_Mono_Fody_Compile Time Weaving - Fatal编程技术网

C# 尝试实现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

我正试图学习如何编写一个Fody模块,并遵循,其中包括一个演练

示例外接程序用于向名称以DTO结尾的任何类添加接口。他使用了来自Fody源代码的基本插件,并更改了执行方法,如下所示

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

谢谢,就这样做了:对不起,我本来打算这样做的,但后来发现它并没有像我预期的那样工作。我只是还没来得及看。别担心,你会明白的:原来代码是有效的,而不是测试!再次感谢你的帮助