Создайте делегата из метода получения или установки свойства

Для создания делегата из метода вы можете использовать синтаксис безопасного типа:

private int Method() { ... }

// and create the delegate to Method...
Func<int> d = Method;

Свойство является оберткой вокруг метода получения и установки, и я хочу создать делегат метода получения свойства. Что-то вроде

public int Prop { get; set; }

Func<int> d = Prop;
// or...
Func<int> d = Prop_get;

Который не работает, к сожалению. Я должен создать отдельный лямбда-метод, который кажется ненужным, когда метод get в любом случае совпадает с сигнатурой делегата:

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);

Есть ли способ создания делегата в методе получения свойства напрямую безопасным для компиляции способом, аналогичным созданию делегата в обычном методе в верхней части, без необходимости использования промежуточного лямбда-метода?

Ответы на вопрос(3)

Ваш ответ на вопрос