1

DLLにクラスが含まれるMAFアプリケーションを開発しています。問題は、アドインの 1 つによって公開されたメソッドの 1 つがこのクラスを使用する場合です。例:

class A
{
    Property_1
    Property_2

    Method_X()
}

そして、私のアドインにはクラスAを使用するメソッドがあります

MyAddIn.Set(class A);

では、パイプラインのどこに DLL を配置すればよいのでしょうか? または、このシナリオをどのように進める必要がありますか?

プロジェクトが開始されると、AddInStore.Update() メソッドの警告により、次のようなメッセージがスローされます: canalization の一部に接続できません...

そのため、 「バージョン管理、コレクションと WPF ビジュアルの受け渡し、シリアル化できない型の受け渡しなど、MAF が提供する他の多くの機能があります」という記事があります。しかし、私は例を見つけることができません。

編集:

契約の制限に関するこのリンクを提供してくれた Panos に感謝します。さらに調査を重ねた結果、Paint.NET プロジェクトを通じて、参照せずにホストでデータ型を使用する方法を示すこの記事を見つけました。

両方のソースを読んだ後、これが私が探しているものであることがわかりました。しかし、私はまだそれを理解することはできません。

最後の請願として、誰かコード例を提供してもらえますか? やっと手に入れるだけ。

ありがとう。

4

1 に答える 1

2

コントラクト アセンブリで許可される型について、これらのガイドラインを検討する必要があります。

基本的に、パイプライン (コントラクト、アダプター、およびビュー) で言及した dll を参照しないでください。これにより、ホストからアドインに型がリークする可能性があります。これは、すべてのパイプライン セグメントが同じアセンブリを参照しているため、バージョン管理が失われることを意味します。つまり、アドインがアセンブリの v.1 を参照し、コントラクトが v.2 を参照している場合、両方のバージョンが読み込まれ、InvalidCasrtException がスローされます。

これに対する解決策は、クラス A に基づいてインターフェイスを作成し、それをコントラクトにすることです。その後、アドインで実装を提供できます。これにより、バージョン管理が失われません。

よろしく、

パノス

于 2012-07-04T08:36:03.150 に答える