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ć?

questionAnswers(2)

yourAnswerToTheQuestion