私のプロジェクトにはプライベートセッターを持ついくつかのプロパティを設定できるユニットテストがいくつかあります。現在、私は反射し、この拡張メソッドを経由して、それをやっている:ラムダ式でプロパティを渡すにはどうしたらいいですか?
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);
しかし、私はコンパイル時にプロパティ名の検証をしたいので、次のようにvia式でプロパティを渡すことができます:
myTestObject.SetPrivateProperty(o => o.TestProperty, 1);
どうすればいいですか?
は、ラムダ式の目的は何ですか?コンパイル時の検証を提供するには? – mellamokb
@mellamokbはい。それを行う別の手段があるなら、私はゲームです。 – Sterno
参照http://stackoverflow.com/questions/671968/retrieving-property-name-from-lambda-expression – phoog