尝试实现 Fody 加载项时出现 Cast 错误
Cast error when trying to implement Fody add-in
我正在尝试学习如何编写 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'
有人知道问题出在哪里吗?我对这方面的经验还不够了解。
尝试
dto.Interfaces.Add(new InterfaceImplementation(ifDef));
我正在尝试学习如何编写 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'
有人知道问题出在哪里吗?我对这方面的经验还不够了解。
尝试
dto.Interfaces.Add(new InterfaceImplementation(ifDef));