我的项目中有一些单元测试,我们希望能够设置一些具有私有设置器的属性。目前我正在通过反射和这种扩展方法来做到这一点:
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);
我怎样才能做到这一点?