【问题标题】:Cast error when trying to implement Fody add-in尝试实施 Fody 加载项时出现投射错误
【发布时间】:2017-11-14 15:03:46
【问题描述】:

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

示例加载项是为名称以“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”

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

【问题讨论】:

    标签: c# mono fody compile-time-weaving


    【解决方案1】:

    试试

    dto.Interfaces.Add(new InterfaceImplementation(ifDef));
    

    【讨论】:

    • 谢谢,成功了:)
    • 对不起,本来打算,但后来发现它没有按我的预期工作。我只是还没有时间看它。别担心,你会得到积分:)
    • 原来代码可以正常工作,但不是测试!再次感谢您的帮助
    猜你喜欢
    • 2017-02-08
    • 2023-02-19
    • 2017-06-01
    • 2018-06-08
    • 1970-01-01
    • 2018-05-03
    • 1970-01-01
    • 2014-08-01
    • 2016-09-19
    相关资源
    最近更新 更多