Tôi có một lớp MyDummyClass
mà tôi muốn chuyển một số thuộc tính dưới dạng biểu thức Lambda để đánh giá sau này. Vì vậy, những gì tôi có thể làm một cái gì đó nhưCách tốt nhất để chuyển danh sách tên thuộc tính như Biểu thức Lambda
public class MyDummyClass<T>
{
public MyDummyClass(Expression<Func<T, object>> property)
{
...
}
...
}
..và sau đó sử dụng lớp đó như , phải không?
Nhưng sau đó tôi muốn không chỉ vượt qua một thuộc tính duy nhất mà là danh sách các thuộc tính. Vì vậy, tôi muốn viết lớp học của tôi như
public class MyDummyClass<T>
{
public MyDummyClass(IEnumerable<Expression<Func<T, object>>> properties)
{
...
}
...
}
và tôi muốn như để sử dụng nó như new MyDummyClass<Person>(new[] { x=>x.Name, x=>x.Surname })
nhưng tiếc rằng không hoạt động! Thay vào đó, tôi phải viết
new MyDummyClass<Person>
(new Expression<Func<Person, object>>[] { x=>x.Name, x=>x.Surname});
Nhưng điều này hơi khó xử viết, phải không? Tất nhiên, việc sử dụng các thông số params sẽ hoạt động, nhưng đây chỉ là mẫu từ một đoạn mã phức tạp hơn, trong đó sử dụng thông số không phải là tùy chọn. Có bất kỳ ai có tùy chọn tốt hơn để thoát khỏi điều này không ??
Tại sao bạn không muốn sử dụng 'params'? Đó là cách tiếp cận đơn giản nhất và nó sẽ hoạt động mà không cần chỉ định loại đại biểu. –
Tôi cũng bỏ phiếu cho các thông số. Nó sẽ giữ cho cú pháp rất gọn gàng và đằng sau hậu trường nó sử dụng một mảng mà là những gì bạn muốn làm ở nơi đầu tiên! – Umair
Chắc chắn, trong ví dụ đơn giản nó sẽ, nhưng tôi lấy nó ra khỏi một phức tạp hơn, nơi tôi không thể sử dụng params như có các tham số tùy chọn khác ở giữa mà do đó sẽ không hoạt động ... đáng buồn – Juri