Для создания делегата из метода, можно использовать компиляцию безопасный с точки зрения типов синтаксис:
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;
Который не работает, к сожалению. Я должен создать отдельный метод лямбды, который кажется ненужным, когда метод получателя соответствует подписи делегата так или иначе:
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);
Есть ли какой-либо способ создать делегата на методе попадающего свойства непосредственно безопасном от компиляции пути, подобном созданию делегата на нормальном методе наверху, не будучи должен использовать промежуточный метод лямбды?
Насколько я могу судить, вы уже записали все "допустимые" варианты. Поскольку невозможно явно адресовать геттер или сеттер в обычном коде (то есть без отражения), я не думаю, что есть способ делать то, что вы хотите.