0

私が開発するアプリケーションは、 が提供する .NET アドイン機能を備えたアドインを使用しますSystem.AddIn。ホスト アプリケーションとアドインは、WPF 埋め込みフォントや XAML アイコンなどのリソースを共有しています。ホストとアドインの両方に含めることは避けたいと思います。あまり複雑にせずにこれを達成する方法はありますか?

私のアプリケーションはすでに 7 つの部分で構成されています: ホスト、ホスト側のビュー、ホスト側のアダプター、コントラクト、アドイン側のアダプター、アドイン側のビュー、そして最後にアドインです。問題は、ホストがアドイン アセンブリをロードしている間、ホスト アセンブリにあるリソースにアドインがアクセスできないことです。

アドインは、ホストが消費するサービスを提供します。アドインが消費するリソースをホストに提供してもらいたいです。

可能な解決策は、ホストとアドインの両方からアクセスされる、すべてのリソースを含む別のアセンブリを導入することです。このソリューションのプラス/マイナスの側面は何ですか? 同様に、コントラクトでない場合、アドインはこのアセンブリの存在に依存できますか?

4

1 に答える 1

0

ホストのコントラクトも追加することで、ホストをアドインに公開できます。その後、アドインは、ホストが提供できるリソースを要求できるようになります。チームのBasic Automation Object Modelサンプルを見てくださいSystem.AddIn。そこにIHostObjectContractは、ホストのコントラクトであり、初期化中に各アドインに提供される があります ( IAutomationAddInContract.Initialize)。

共有アセンブリを使用した別のアプローチも可能です。ただし、それSystem.AddInは単なるライブラリではないことに注意してください。ガイドラインに従わない場合、一部の機能が失われる可能性があります。通常、最初に失われるのはバージョン管理です。共有アセンブリを追加すると、バージョン管理が失われる危険があります。それを受け入れることができる場合、または共有アセンブリのパブリック型が決して変更されないことが確実な場合は、それを選択してください。

于 2013-04-16T22:46:06.063 に答える