wpf usercontrols
での一般的なキャストの問題の解決WPFアプリケーションは、ベースUserControlsを特殊な派生したuserControlsのテンプレートとして頻繁に使用します。 ただし、このセットアップは、これらのコントロール間で一般的なタイプをキャストする際に困難につながる可能性があります。
キャスティングの難しさ
派生したusercontrolsは、しばしばベースのusercontrolでメソッドを呼び出すことによりイベントを処理します。 これらのベースメソッドは、特定の汎用データコンテキストタイプを期待する場合があります。 派生したusercontrolのdataContextが派生した汎用タイプ(の代わりにBaseViewModel<wire>
など)である場合、それをベースのusercontrolの予想されるタイプにキャストしようとすると、BaseViewModel<part>
。
InvalidCastException
問題のルート
この鋳造の失敗は、ジェネリックの基本的な性質に由来します。 やのような各汎用インスタンス化は、個別のタイプです。
からへのキャストは、矛盾を生み出す可能性があるため、許可されていません。
たとえば、List<wolf>
からList<animal>
までのキャストを許可すると、List<wolf>
(動物ではなく動物ではなく)の追加が許可されます。 これにより、不適切な要素を含む無効なList<animal>
が作成されます。
キャスティングエラーの回避
からList<wolf>
への直接キャストは本質的に安全ではなく、避ける必要があります。
List<animal>
Sheep
より良いソリューションList<wolf>
キャストする代わりに、Co-およびContravarianceの使用を検討してください。 このアプローチは、一般的なタイプ間の互換性を可能にしますが、クラスではなくインターフェイスにのみ適しています。 依存関係注射や非世論の基本クラス/インターフェイスの使用などの代替設計パターンは、この問題を解決するためにより適している場合があります。
以上がWPF USERCONTROLSの決定的な一般的なキャストの問題を解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。