Возможно ли это?Использование свойства Method Method в действии <T> делегат в il.EmitCall
//
// create a delegate
Action<Type> action = (t) => t.DoSomething;
//
// get the IL generator for a method
ILGenerator il = myMethodBuilder.GetILGenerator();
//
// try and call the delegate
il.EmitCall(OpCodes.Callvirt, action.Method, null);
Im get MethodAccessException всякий раз, когда я пытаюсь вызвать метод.
Благодаря
Я вижу, что MethodInfo IsPrivate имеет значение true, есть ли способ изменить это? В противном случае я могу просто использовать открытый статический член, но его опрятный с Lambda :) Спасибо –
Невозможно изменить это; это деталь реализации компилятора C# –
Если учесть это, лучшим вариантом может быть поиск способа передачи делегата 'action' в ваш сгенерированный метод либо путем добавления параметра, либо путем создания вашего сгенерированного метода экземпляром класса член и установив поле в этом классе. Поскольку вы будете называть свою лямбду через делегата, вы не будете чувствительны к тому, как эта лямбда реализована. –