Чтобы создать делегат из метода, вы можете использовать синтаксис типа типа компиляции:
private int Method() { ... }
// and create the delegate to Method...
Func<int> d = Method;
Свойство является оберткой вокруг метода getter и setter, и я хочу создать делегат для метода getter свойства. Что-то вроде
public int Prop { get; set; }
Func<int> d = Prop;
// or...
Func<int> d = Prop_get;
Что, к сожалению, не работает. Я должен создать отдельный лямбда-метод, который кажется ненужным, когда метод getter все равно совпадает с подписью делегата:
Func<int> d = () => Prop;
Чтобы использовать метод делегата напрямую, я должен использовать неприятное отражение, которое не является безопасным для компиляции:
// something like this, not tested...
MethodInfo m = GetType().GetProperty("Prop").GetGetMethod();
Func<int> d = (Func<int>)Delegate.CreateDelegate(typeof(Func<int>), m);
Есть ли способ создания делегата в методе получения свойств непосредственно скомпилированным способом, аналогично созданию делегата на обычном методе вверху, без использования промежуточного метода лямбда?