Crie um delegado a partir de um método getter ou setter de propriedades
Para criar um delegado a partir de um método, você pode usar a sintaxe de compilação segura do tipo:
private int Method() { ... }
// and create the delegate to Method...
Func<int> d = Method;
Uma propriedade é um invólucro em torno de um método getter e setter, e eu quero criar um representante para um método getter de propriedade. Algo como
public int Prop { get; set; }
Func<int> d = Prop;
// or...
Func<int> d = Prop_get;
O que não funciona, infelizmente. Eu tenho que criar um método lambda separado, que parece desnecessário quando o método getter corresponde à assinatura do delegado de qualquer maneira:
Func<int> d = () => Prop;
Para usar o método delegate diretamente, eu tenho que usar reflexões desagradáveis, que não são de tipo seguro para compilação:
// something like this, not tested...
MethodInfo m = GetType().GetProperty("Prop").GetGetMethod();
Func<int> d = (Func<int>)Delegate.CreateDelegate(typeof(Func<int>), m);
Existe alguma maneira de criar um delegado em uma propriedade, obtendo o método diretamente de forma segura para compilação, semelhante à criação de um delegado em um método normal na parte superior, sem a necessidade de usar um método lambda intermediário?