0

我正在尝试学习如何编写 Fody 模块,并且正在学习Pluralsight Fody 课程,其中包括一个演练。

示例加载项是向名称以“DTO”结尾的任何类添加接口。他使用了 Fody 源代码中的基本插件,并将 Execute() 方法更改如下...

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'

有人知道问题是什么吗?我对这方面的经验不够了解。

4

1 回答 1

1

尝试

dto.Interfaces.Add(new InterfaceImplementation(ifDef));
于 2017-12-03T07:44:46.093 回答