私は、構成可能性を提供するために PRISM の初期の化身のように見えるものを使用するサードパーティ アプリケーションを拡張しています。
私は 1 つのビューのプロトタイプを作成しましたが、それは非常に簡単でした。UI をサード パーティの UI にプラグインするには、UserControl に特定のインターフェイス (IThirdPartyView など) を実装する必要がありました。
これは大丈夫でした。しかし...今は、より生産的な方法でコードを実装したいと考えています。重要なポイントの 1 つは、私が作成する UserControls は汚染されていない必要があるため、サード パーティのものに直接依存しないようにすることです。別のサードパーティに切り替える場合、コードに焼き付けられた他のサードパーティへの依存関係を持ちたくありません。
オブジェクト指向のバックグラウンドであるため、解決策は簡単だと思いました。サードパーティに依存しない別のアセンブリにUIを配置します。これを CleanUserControl と呼びましょう。次に、サード パーティ固有の実装で、クラス CleanUserControl を拡張し、その拡張されたクラスにサード パーティ固有のインターフェイスを実装させ、CleanUserControl クラスを拡張させます。クラス宣言は次のようになります。
public class SpecificUserControl : CleanUserControl, IThirdPartyView
{
// Implementation of IThirdPartyView
}
しかし...実際には、これを達成するのに苦労しています。
私はそれをコンパイルすることができましたが、実行時にこれをヒットしました:
コンポーネント「CustomerProfile.ThirdParty.View.SecurityView2」には URI「/CustomerProfile;component/view/securityview.xaml」で識別されるリソース
実際には、拡張機能でコードビハインドのみを実装し、xaml を親から継承するようにしたいと考えていますが、これが可能かどうかはわかりません。
私の質問が明確であることを願っています。説明に苦労しました。