Vấn đề tôi đang cố giải quyết là cách viết một phương thức nhận tên thuộc tính dưới dạng chuỗi và trả về giá trị được gán cho thuộc tính đã nói.C# truy cập các giá trị thuộc tính động theo tên thuộc tính
lớp Mô hình của tôi được khai báo tương tự như:
public class Foo
{
public int FooId
public int param1
public double param2
}
và từ bên trong phương pháp của tôi, tôi muốn làm một cái gì đó tương tự như sau
var property = GetProperty("param1)
var property2 = GetProperty("param2")
Tôi hiện đang cố gắng để làm điều này bằng cách sử dụng biểu thức như vậy như
public dynamic GetProperty(string _propertyName)
{
var currentVariables = m_context.Foo.OrderByDescending(x => x.FooId).FirstOrDefault();
var parameter = Expression.Parameter(typeof(Foo), "Foo");
var property = Expression.Property(parameter, _propertyName);
var lambda = Expression.Lambda<Func<GlobalVariableSet, bool>>(parameter);
}
Cách tiếp cận này có đúng không, và nếu có, có thể trả lại thứ là một loại động?
Câu trả lời là chính xác, đã khiến việc này trở nên quá phức tạp. Giải pháp bây giờ là:
public dynamic GetProperty(string _propertyName)
{
var currentVariables = m_context.Foo.OrderByDescending(g => g.FooId).FirstOrDefault();
return currentVariables.GetType().GetProperty(_propertyName).GetValue(currentVariables, null);
}
Bạn có thể sử dụng System.Reflection.PropertyInfo để tra cứu giá trị của thuộc tính từ một loại cụ thể. http://msdn.microsoft.com/en-us/library/system.reflection.propertyinfo.aspx – Chris