DOBON.NET DOBON.NETプログラミング掲示板過去ログ

プラグインへのデータ受け渡し方法

環境/言語:[WindowsXP Pro, Visual Studio .NET 2003, C#]
分類:[.NET]

はじめまして。

「プラグイン機能を持つアプリケーションを作成する」
http://dobon.net/vb/dotnet/programing/plugin.html

を参考にプラグインを使用したアプリケーションを作成しています。

アプリケーションとプラグイン間のデータの受け渡し方法で
アプリケーションで作成したクラスインスタンスを
プラグイン側で操作することは可能でしょうか?

※アプリケーション側で作成したクラスインスタンスは
独自作成のデータベース接続用クラス(DLL)です。

(上記を作成して実行すると「フィールドが見つかりません」エラーが発生しました。)

また、プラグイン間のデータの受け渡し方法で
良い方法があれば教えていただけないでしょうか?

宜しくお願いいたします。
私のサンプルでもアプリケーション側のメインフォームやRichTextBoxをプラグインで操作できるようにしていますが、同じようなやり方でできないでしょうか?
お返事が遅くなり申し訳ありません。

文字列やフォームコントロールなどは渡すことができたのですが、
独自に作成したクラスが受け渡せなくて困っております。

エラー内容
-------------------------------------------------------------
'System.MissingMethodException' のハンドルされていない例外が Main.exe で発生しました。

追加情報 : メソッドが見つかりません : Library.TestInfo Plugin.IPluginHost.get_TestInfo()
-------------------------------------------------------------

簡略化したソースを公開しますので、
ご教授お願いいたします。

-------------------------------------------------
メインプロジェクト(MainApplication) [MainApplication.exe]
※Pluginのプロジェクトを参照に追加
※TestInfoのプロジェクトを参照に追加

namespace MainApp
{
    public class frmMain : System.Windows.Forms.Form, Plugin.IPluginHost
    {
        private Library.TestInfo _TestInfo = new Library.TestInfo();
        public Library.TestInfo TestInfo
        {
            get
            {
                return _TestInfo;
            }
        }
    }
}

-------------------------------------------------
インターフェースプロジェクト(Plugin) [Plugin.dll]
※TestInfoのプロジェクトを参照に追加

namespace Plugin
{
    public interface IPlugin : IDisposable
    {
        void Initialize(IPluginHost host);
    }

    public interface IPluginHost : IDisposable
    {
        Library.TestInfo TestInfo
        {
            get;
        }
    }
}


-------------------------------------------------
プラグインプロジェクト(PluginApplication) [(PluginApplication.dll)]
※Pluginのプロジェクトを参照に追加
※TestInfoのプロジェクトを参照に追加

namespace PluginApp
{
    public class PluginApplication : Plugin.IPlugin
    {
        private Plugin.IPluginHost _Host;
        private Library.TestInfo _TestInfo;
        public void Initialize(Plugin.IPluginHost host)
        {
            //ここのメソッドが呼ばれた瞬間に例外エラーが発生します

            _Host = host;

            this._TestInfo = _Host.TestInfo;
        }
    }
}


-------------------------------------------------
外部ライブラリプロジェクト(TestInfo) [TestInfo.dll]

namespace Library
{
    public class TestInfo
    {
        public TestInfo()
        {
        }
    }
}
自己レスです。

大変申し訳ありません。
初歩的なミスで
DLLの参照先がメインアプリケーションとプラグイン側で異なって
いたための現象でした。

ですので、解決とさせていただきます。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板