Ayúdame por favor con la importación del método. Quiero tejer el ensamblaje e inyección de la referencia de llamadas de método de la clase base definida en el otro ensamblaje (de hecho, es el ensamblaje donde se define el código de tejido).
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;
}
}
}
El código de importación del método funciona bien y devuelve la referencia del método
private MethodReference ImportMethod(string name)
{
var type = MongoConnectModule.Import(typeof(BaseDataObject));
return MongoConnectModule.Import(type.Resolve().Methods.First(m => m.Name == name));
}
Pero después de la redacción de la escritura, llame, me arroja un error:
C: dev MongoConnect WeavingTaskTest Weaving Codeweaving.Targets (32,5): Error MSB4018: System.ArGumentException: Miembro 'System.Void MongoConnect.BasedAns en otro módulo y debe importarse
_assemblyDefinition.Write(_assemblyPath, new WriterParameters() { WriteSymbols = true, SymbolWriterProvider = debugWriterProvider });
¿Alguna idea de cómo podría hacer eso?