wpf usercontrols에서 일반적인 캐스트 문제 해결
WPF 응용 프로그램은 자주 기본 USERCONTROLS를 전문화되고 파생 된 USERTROL의 템플릿으로 사용합니다. 그러나이 설정은 이러한 컨트롤 사이에 일반적인 유형을 캐스팅 할 때 어려움을 초래할 수 있습니다.
캐스팅 어려움
파생 된 USERCONTROLS는 종종 기본 USERCONTROL에서 메소드를 호출하여 이벤트를 처리합니다. 이러한 기본 방법은 특정 일반 데이터 콘텍스트 유형을 기대할 수 있습니다. 파생 된 USERCONTROL의 DataContext가 파생 된 일반 유형 (예 : ) 인 경우 USERCONTROL의 예상 유형에 따라
.
문제의 근본
이 주조 실패는 제네릭의 기본 특성에서 비롯됩니다. 및
와 같은 각 일반적인 인스턴스화는 뚜렷한 유형입니다.
에서 로의 캐스팅은 불일치가 발생할 수 있기 때문에 허용되지 않습니다.
예를 들어 에서
로 캐스트를 허용하면
(동물이지만 늑대가 아닌 동물)를 추가 할 수 있습니다. 이것은 부적절한 요소를 포함하는 유효하지 않은 BaseViewModel<wire>
를 만듭니다.
BaseViewModel<part>
주조 오류 방지 InvalidCastException
직접 캐스팅은 에서 로 직접 캐스팅이 본질적으로 안전하지 않으며 피해야합니다. .
더 나은 솔루션
캐스팅 대신 공동 및 비정상적인 사용을 고려하십시오. 이 접근법은 일반 유형 간의 호환성을 허용하지만 클래스가 아닌 인터페이스에만 적합합니다. 의존성 주입 또는 비 게 릭 기본 클래스/인터페이스 사용과 같은 대체 설계 패턴 이이 문제를 해결하는 데 더 적합 할 수 있습니다.
위 내용은 WPF USERCONTROLS에서 지배적 인 일반 캐스트 문제를 어떻게 해결할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!