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?

questionAnswers(3)

yourAnswerToTheQuestion