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

Для создания делегата из метода, можно использовать компиляцию безопасный с точки зрения типов синтаксис:

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

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

19
задан thecoop 12 April 2010 в 11:52
поделиться

1 ответ

Насколько я могу судить, вы уже записали все "допустимые" варианты. Поскольку невозможно явно адресовать геттер или сеттер в обычном коде (то есть без отражения), я не думаю, что есть способ делать то, что вы хотите.

7
ответ дан 30 November 2019 в 05:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: