メソッドのインポートで私を助けてください。アセンブリを織り、他のアセンブリで定義された基本クラスからのメソッドコールリファレンスを挿入したい(実際、織りコードが定義されているアセンブリです)。
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;
}
}
}
メソッドインポートコードは正常に機能し、メソッドリファレンスを返します
private MethodReference ImportMethod(string name)
{
var type = MongoConnectModule.Import(typeof(BaseDataObject));
return MongoConnectModule.Import(type.Resolve().Methods.First(m => m.Name == name));
}
しかし、AssemblyDefinitionの書面後のコールの後、それは私にエラーを投げかけます:
c: dev mongoconnect weavingtasktest weaving codeweaving.targets(32,5):エラーmsb4018:system.argumentexception:member 'system.void mongoconnect.basedataobject :: setProperty(System.Systing)別のモジュールでは、インポートする必要があります
_assemblyDefinition.Write(_assemblyPath, new WriterParameters() { WriteSymbols = true, SymbolWriterProvider = debugWriterProvider });
どうやってそれをすることができるのかという考えはありますか?