Tôi đang phát triển một API sử dụng các biểu thức lambda để chỉ định các thuộc tính. Tôi đang sử dụng mảnh nổi tiếng mã này tương tự với trang này (điều này là đơn giản và không đầy đủ, chỉ để làm những gì rõ ràng tôi đang nói về):C#: Lấy tên các thuộc tính trong một chuỗi từ biểu thức lambda
public void Foo<T, P>(Expression<Func<T, P>> action)
{
var expression = (MemberExpression)action.Body;
string propertyName = expression.Member.Name;
// ...
}
Để được gọi là như thế này:
Foo((String x) => x.Length);
Bây giờ tôi muốn chỉ định đường dẫn bất động sản bằng cách kết nối tên thuộc tính, như thế này:
Foo((MyClass x) => x.Name.Length);
Foo sẽ có thể để phân chia các đường dẫn vào tên tài sản của mình ("Name"
và "Length"
). Có cách nào để làm điều này với nỗ lực hợp lý không?
Có một somehow similar looking question, nhưng tôi nghĩ họ đang cố kết hợp các biểu thức lambda ở đó.
Another question cũng đang xử lý tên thuộc tính lồng nhau, nhưng tôi không thực sự hiểu những gì họ đang nói đến.
Chà, công trình này và nó khá đơn giản. Cảm ơn rất nhiều! –
@StefanSteinegger Câu hỏi cũ, tôi biết ... nhưng nếu nó chỉ là tên bạn cần, 'expr.ToString(). Split ('.'). Skip (1)' sẽ đơn giản hơn :) – asgerhallas
@asgerhallas: bạn có thể thêm một câu trả lời khác. –