В моем проекте есть отдельные модульные тесты, в которых мы хотим установить некоторые свойства, которые имеют частные сеттеры. В настоящее время я делаю это с помощью отражения, и этот метод расширения:Как передать свойство через выражение лямбда?
public static void SetPrivateProperty(this object sourceObject, string propertyName, object propertyValue)
{
sourceObject.GetType().GetProperty(propertyName).SetValue(sourceObject, propertyValue, null);
}
Если предположить, что у меня был TestObject так:
public class TestObject
{
public int TestProperty{ get; private set; }
}
Затем я могу назвать это в моих модульных тестов следующим образом:
myTestObject.SetPrivateProperty("TestProperty", 1);
Тем не менее, я хотел бы иметь подтверждение имени свойства во время компиляции, и поэтому я хотел бы передать свойство в выражении через выражение, например:
myTestObject.SetPrivateProperty(o => o.TestProperty, 1);
Как это сделать?
Какова цель лямбда-выражения? Обеспечить проверку времени компиляции? – mellamokb
@mellamokb Да. Если есть еще одно средство, я играю. – Sterno
См. Http://stackoverflow.com/questions/671968/retrieving-property-name-from-lambda-expression – phoog