2010-05-11 3 views
6

XML에 개체 모델을 저장하고 있지만 다시로드 할 때 속성에 setter가 없으므로 PropertyInfo.SetValue()를 사용하려고 할 때 예외가 발생합니다. 그냥 지옥이야.애트리뷰트에 공용 설정자가 있는지 반반하게 반영하는 방법

getter 만 가지고있는 속성을 저장하지 않거나로드 할 때 값을 설정하려고 시도했는지 여부를 확인하고 싶습니다.

누구 당신은 PropertyInfo.GetSetMethod 사용할 수있는이

건배

답변

10

을 수행하는 방법을 알고있다 -이 null를 반환 할 등록 정보 중 하나가 읽기 전용 또는 세터가 비공개 인 경우. 가 아닌 공공 세터에 대처 할 수있는 경우

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

, 당신은 사용할 수 있습니다

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

당신은 헤아릴 수없는 양의 물건을 알고 있습니다. 감사합니다 – DrLazer

2

사용 PropertyInfo.CanWrite 속성을.

+2

FYI, 비공개 설정자에 대해서도 true를 반환합니다. –

관련 문제