我的項目中有一些單元測試,我們希望能夠設置一些具有私人設置器的屬性。如何通過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