Jak mogę przekazać właściwość przez wyrażenie lambda?
W moim projekcie jest kilka testów jednostkowych, w których chcemy mieć możliwość ustawienia niektórych właściwości, które mają ustawienia prywatne. Obecnie robię to za pomocą refleksji i tej metody rozszerzenia:
<code>public static void SetPrivateProperty(this object sourceObject, string propertyName, object propertyValue) { sourceObject.GetType().GetProperty(propertyName).SetValue(sourceObject, propertyValue, null); } </code>
Zakładając, że mam taki obiekt testowy:
<code>public class TestObject { public int TestProperty{ get; private set; } } </code>
Mogę to nazwać w moich testach jednostkowych w następujący sposób:
<code>myTestObject.SetPrivateProperty("TestProperty", 1); </code>
Chciałbym jednak sprawdzić poprawność nazwy właściwości w czasie kompilacji, dlatego chciałbym móc przekazać właściwość przez wyrażenie, tak jak poniżej:
<code>myTestObject.SetPrivateProperty(o => o.TestProperty, 1); </code>
Jak mogę to zrobić?