मेरे प्रोजेक्ट पर कुछ यूनिट परीक्षण हैं जहां हम निजी सेटर्स वाले कुछ गुण सेट करने में सक्षम होना चाहते हैं।मैं लैम्ब्डा अभिव्यक्ति के माध्यम से एक संपत्ति कैसे पास कर सकता हूं?
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);
मैं यह कैसे कर सकता हूं?
लैम्ब्डा अभिव्यक्ति का उद्देश्य क्या है? संकलन-समय सत्यापन प्रदान करने के लिए? – mellamokb
@mellamokb हां। अगर ऐसा करने का दूसरा साधन है, तो मैं खेल हूं। – Sterno
देखें http://stackoverflow.com/questions/671968/retrieving-property-name-from-lambda-expression – phoog