2016-05-31 8 views
1

속성을 콜백으로 변경했으며 일부 유효성 검사를 수행해야합니다.DependencyObject.SetValue 대 캐스트 및 속성 설정

필자는 새 값을 가져 와서 min 및 max 값과 같은 다른 속성 기준에 대해 유효성을 검사 할 것입니다.

내가 변경된 이벤트에서 종속성 개체를 가지고

DependencyObject.SetValue(TargetProperty,NewValue); 

를 사용하거나 변수에 캐스팅 직접

ObjectType myObjectType = (ObjectType)DependencyObject; 
myObjectType.Target=NewValue; 

내 질문은 속성을 사용하거나 계획하고이 작업을 수행하려면 어떤 방법을 다른 방법보다 사용하는 이유는 무엇일까요? 주조가 SetValue/GetValue 조회 등을 많이하는 것보다 리소스에 대한 부담이 더 많습니까? 메소드에서 최대 10 번 속성을 참조합니다.

감사합니다.

+0

DP에 대해 [이 MS 링크] (https://msdn.microsoft.com/en-us/library/ms752914)를보고 작성하는 방법을 알려 드리겠습니다. 네가 그랬듯이 그걸 쓸 이유가 없어. –

답변

1

DependencyObject에서 종속성 속성의 표준 구현은 SetValue()을 호출하는 것입니다. 게다가, 주조는 특히 이런 맥락에서 싼 값이다. 그래서 두 가지 접근 방식 사이에는 실제적인 차이가 없습니다.

나를 위해, 당신이 집중하고자하는 작업의 어떤 부분으로 내려갈 것입니다. 구현이 객체가 사실 DependencyObject이라는 사실과 밀접하게 관련 되려면 SetValue()을 직접 호출하지 않아야합니다. 이것이 WPF의 기능입니다.

반면에 코드를 C#과 유사하게 만들고 일반 속성 접근 관례를 따르려면 올바른 형식으로 캐스팅 한 다음 속성을 직접 설정하면보다 읽기 쉽고 유지 관리가 쉬워집니다. 예, 캐스팅 한 다음 속성 setter를 호출하는 추가 작업을 추가합니다. 그러나 그것들은 무시할 수있는 비용이며 실제적으로 헤아릴 수 없습니다. 그리고 그 대가로 속성의 특정 구현을 가정하지 않는 코드를 얻을 수 있습니다.