Я не нашел никакого собственного способа сделать это, но вы можете создать структуру, которая бы это делала.Отказ от ответственности: я реализовал это, потому что это было весело.Я не тестировал, так что это всего лишь идея, и я сомневаюсь, что она эффективна.
public class PropertyHolder<T, Y>
{
private static object[] emptyArray = new object[0];
public PropertyHolder(Y instance, string propertyName)
{
var property = typeof(Y).GetProperty(propertyName);
var setMethod = property.SetMethod;
var getMethod = property.GetMethod;
Set = (t) => setMethod.Invoke(instance, new object[]{t});
Get = () => (T) getMethod.Invoke(instance, emptyArray);
}
public Action<T> Set { get; private set; }
public Func<T> Get { get; private set; }
}
Вы можете использовать это следующим образом:
public class Toto
{
public int TheInt { get; set; }
}
var x = new Toto();
var propPointer = new PropertyHolder<int,Toto>(x, nameof(Toto.TheInt));