Bạn có thể nhận tất cả các thuộc tính của một loại bằng cách sử dụng phương pháp GetProperties
. Sau đó, bạn có thể lọc danh sách này bằng phương pháp mở rộng LINQ Where
. Cuối cùng, bạn có thể chiếu các thuộc tính bằng cách sử dụng phương thức mở rộng LINQ Select
hoặc phím tắt tiện lợi như ToDictionary
.
Nếu bạn muốn giới hạn liệt kê để tính có kiểu String
bạn có thể sử dụng mã này:
IDictionary<String, String> = myObject.GetType()
.GetProperties()
.Where(p => p.CanRead && p.PropertyType == typeof(String))
.ToDictionary(p => p.Name, p => (String) p.GetValue(myObject, null));
này sẽ tạo ra một từ điển mà các bản đồ tên tài sản cho giá trị bất động sản. Vì loại thuộc tính được giới hạn ở String
, nên an toàn khi truyền giá trị thuộc tính đến String
và loại của loại trả lại là IDictionary<String, String>
.
Nếu bạn thay vì muốn tất cả các thuộc tính bạn có thể làm điều đó như thế này:
IDictionary<String, Object> = myObject.GetType()
.GetProperties()
.Where(p => p.CanRead)
.ToDictionary(p => p.Name, p => p.GetValue(myObject, null));
Nguồn
2010-12-13 12:05:14
Thay vì pi.GetGetMethod(). Gọi (myObject, null) Tôi muốn sử dụng pi.GetValue (myObject, null) - đơn giản hơn để đọc. – Sam