0

I'm trying to learn how to write a Fody module, and was following the Pluralsight Fody course, which includes a walkthrough.

The sample add-in was to add an interface to any classes whose names ended in "DTO". He used the basic add-in from the Fody source, and changed the Execute() method as follows...

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

However, when I do this, I get a compiler error on the last code line...

Argument 1: cannot convert from 'Mono.Cecil.TypeDefinition' to 'Mono.Cecil.InterfaceImplementation'

Anyone any idea what the problem is? I'm not experienced enough in this stuff to know.

Avrohom Yisroel
  • 8,555
  • 8
  • 50
  • 106

1 Answers1

1

try

dto.Interfaces.Add(new InterfaceImplementation(ifDef));
Simon
  • 33,714
  • 21
  • 133
  • 202