2010-05-11 31 views
6

Im lưu mô hình đối tượng ra ngoài XML nhưng khi tôi tải nó trở lại, tôi có ngoại lệ khi cố gắng sử dụng PropertyInfo.SetValue() vì thuộc tính không có trình thiết lập chỉ là một getter.Làm thế nào để nói phản ánh nếu một thuộc tính có công khai Setter

Tôi muốn không lưu các thuộc tính chỉ có getters hoặc tìm ra khi tải cho dù nó hợp lệ cho tôi để thử và thiết lập một giá trị hay không.

Bất kỳ ai biết làm thế nào để làm điều này

Cheers

Trả lời

10

Bạn có thể sử dụng PropertyInfo.GetSetMethod - điều này sẽ trở null nếu một trong hai tài sản là chỉ đọc hoặc setter là ngoài công lập.

if (property.GetSetMethod() != null) 
{ 
    // Yup, you can write to it. 
} 

Nếu bạn có thể đối phó với một setter ngoài công lập, bạn có thể sử dụng:

if (property.GetSetMethod(true) != null) 
{ 
    // Yup, there's a setter - but it may be private 
} 
+1

bạn biết số lượng nội dung không thể hiểu được. cảm ơn – DrLazer

2

Sử dụng PropertyInfo.CanWrite tài sản.

+2

FYI, điều này sẽ trở lại đúng ngay cả đối với người định cư ngoài công lập. –

Các vấn đề liên quan