2014-02-17 5 views
1

System.Reflection.Emit.TypeBuilder.DefineProperty 메서드를 사용하여 속성을 정의하는 컨텍스트에서 PropertyAttribute.HasDefault 열거 형 값의 목적을 묻고 싶습니다. PropertyAttributes.HasDefault을 사용해야하고 PropertyAttributes.None 일 때 무엇이 ​​변경됩니까?PropertyAttributes.HasDefault 및 PropertyBuilder.SetConstant 의미

내가 아는 한 PropertyBuilder의 SetConstant 메소드와 관련되어 있지만 실제로 테스트 할 수있는 한 기본 속성 값을 변경하지 않으므로 SetConstant는 실제로 무엇을합니까?

(I 재산의 기본값 변경 의도하지 않습니다 - 단지 이러한 일들이 무엇을 이해하려고 노력)

답변

2

SetConstant 특정 IL 메타 데이터와 컴파일 시간 상수를 연결하는 데 사용되는 래퍼 주위 TypeBuilder.SetConstantValue(),이다, 가장 일반적으로 매개 변수 (기본값) 및 const 필드.

속성에 대한 유용성은 다소 모호한 것 같습니다. 속성의 get 접근자가 실제로 반환하는 값에는 영향을주지 않습니다. SetConstant()을 통해 설정된 기본값은 메타 데이터 또는 리플렉션을 통해서만 검사 할 수 있습니다. 리플렉션 또는 일리노이 분석 만 사용하여 속성에서 반환 된 기본값을 다른 사람이 확인할 수있게하려는 경우 유용 할 수 있지만 get 접근자는 실제로이 값을 반환 할 필요가 없기 때문에 절대적으로 그 값을 가져야합니다. 소금.