Có một số bài kiểm tra đơn vị trong dự án của tôi, nơi chúng tôi muốn có thể thiết lập một số thuộc tính có trình cài đặt riêng. Hiện nay tôi đang làm việc đó thông qua phản ánh và phương pháp mở rộng này:Làm cách nào để chuyển thuộc tính qua biểu thức lambda?
public static void SetPrivateProperty(this object sourceObject, string propertyName, object propertyValue)
{
sourceObject.GetType().GetProperty(propertyName).SetValue(sourceObject, propertyValue, null);
}
Giả sử tôi đã có một TestObject như thế này:
public class TestObject
{
public int TestProperty{ get; private set; }
}
Sau đó tôi có thể gọi đây là trong các thử nghiệm đơn vị của tôi như sau:
myTestObject.SetPrivateProperty("TestProperty", 1);
Tuy nhiên, tôi muốn xác thực tên thuộc tính tại thời gian biên dịch và do đó tôi muốn có thể chuyển thuộc tính qua biểu thức, như sau:
myTestObject.SetPrivateProperty(o => o.TestProperty, 1);
Tôi làm cách nào để thực hiện việc này?
mục đích của biểu thức lambda là gì? Để cung cấp xác nhận thời gian biên dịch? – mellamokb
@mellamokb Có. Nếu có cách khác để làm điều đó, tôi là game. – Sterno
Xem http://stackoverflow.com/questions/671968/retrieving-property-name-from-lambda-expression – phoog