Import metod za pomocą Mono.Cecil

Pomóż mi z importem metod. Chcę splot złożenia i wstrzyknąć odwołanie do metody z klasy bazowej zdefiniowanej w innym zespole (w rzeczywistości jest to zespół, w którym zdefiniowano kod tkacki).

private void InsertCallSetReference()
{
    //Get the load instruction to replace
    var ilProcessor = Property.SetMethod.Body.GetILProcessor();
    var argumentLoadInstructions = ilProcessor.Body.Instructions.ToList();

    MethodReference methodReference = ImportMethod("SetReference");

    foreach (var instruction in argumentLoadInstructions)
    {
        if (instruction.OpCode == OpCodes.Stfld)
        {
            ilProcessor.InsertAfter(instruction, ilProcessor.Create(OpCodes.Call, methodReference));
            ilProcessor.InsertAfter(instruction, ilProcessor.Create(OpCodes.Ldarg_1));
            ilProcessor.InsertAfter(instruction, ilProcessor.Create(OpCodes.Ldstr, DBFieldName));
            ilProcessor.InsertAfter(instruction, ilProcessor.Create(OpCodes.Ldarg_0));
            ilProcessor.Remove(instruction);
            break;
        }
    }
}

Kod importu metody działa dobrze i zwraca odwołanie do metody

private MethodReference ImportMethod(string name)
{
     var type = MongoConnectModule.Import(typeof(BaseDataObject));
     return MongoConnectModule.Import(type.Resolve().Methods.First(m => m.Name == name));
}

Ale po AssemblyDefinition Write call rzuca mi błąd:

C: dev MongoConnect WeavingTaskTest Tkanie CodeWeaving.targets (32,5): błąd MSB4018: System.ArgumentException: Member 'System.Void MongoConnect.BaseDataObject :: SetProperty (System.String, System.Object)' jest zadeklarowany w innym module i musi zostać zaimportowany

_assemblyDefinition.Write(_assemblyPath, new WriterParameters() { WriteSymbols = true, SymbolWriterProvider = debugWriterProvider });

Jakiś pomysł, jak mógłbym to zrobić?

questionAnswers(1)

yourAnswerToTheQuestion