Tôi cần tìm nạp tất cả các thuộc tính của một loại ẩn danh có thể được ghi vào.Nhận các thuộc tính đọc/ghi của Anonymous Type
ví dụ:
var person = new {Name = "Person's Name", Age = 25};
Type anonymousType = person.GetType();
var properties = anonymousType.GetProperties(BindingFlags.Public | BindingFlags.Instance);
Vấn đề là tất cả các khách sạn có CanWrite
tài sản false
của họ. Điều này được trả về là đúng đối với các loại không ẩn danh.
Tôi cũng đã thử thực hiện cuộc gọi đến PropertyInfo.GetSetMethod()
trả về null
.
Làm cách nào để kiểm tra xem liệu thuộc tính có thể được ghi vào không?
Chỉnh sửa: Có lẽ nó sẽ đủ để biết liệu một loại có ẩn danh hay không. Làm cách nào để tìm hiểu xem một loại có ẩn danh hay không bằng cách sử dụng sự phản chiếu?
Xin chào, "không phải lúc nào"? Bạn có thể giải thích thêm một chút. Ngoài ra tôi đã mong đợi một phương pháp thiết lập được tạo ra quá. Trình biên dịch có đủ thông minh để tạo ra setter chỉ khi nó được sử dụng không? - Cảm ơn. –
Cũng có thể biết nếu một loại là vô danh bằng cách sử dụng sự phản ánh? –
Bạn * không thể * sử dụng setter với loại ẩn danh được tạo bởi C# - như tôi đã nói, nó luôn luôn không thay đổi. Đối với các loại được đặt tên, cho dù bạn có thiết lập hay không sẽ phụ thuộc vào khai báo, như trong ví dụ. Đối với việc phát hiện xem một loại đã được tạo ra bởi trình biên dịch, có một câu hỏi SO về điều đó ở đâu đó. Tôi sẽ cố gắng tìm nó. –