我的项目中有一些单元测试,我们希望能够设置一些具有私人设置器的属性。如何通过lambda表达式传递属性?
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);
我该怎么做?
什么是lambda表达式的目的是什么?提供编译时验证? – mellamokb 2012-04-17 14:46:39
@mellamokb是的。如果还有其他方法可以做到这一点,我就是游戏。 – Sterno 2012-04-17 14:47:06
请参阅http://stackoverflow.com/questions/671968/retrieving-property-name-from-lambda-expression – phoog 2012-04-17 14:49:53