だらだらやるよ。

こげつのIT技術メモ

クラスを動的に読み込む場合の注意

プラグイン機能的なものを実装する際のメモ


この間、プラグイン機能を実装しようと思って、dobonさんのところ(http://dobon.net/vb/dotnet/programing/plugin.html)を参考にプログラム書いてたときの出来事。
この記事での事柄を一通り実装して、実行時に事件が起こりました。
CreateInstanceメソッドの実行時に落ちるのですよね
で、試行錯誤しながら色々試していたところ、問題を発見。
IPluginインタフェースがあるdllを静的に読み込んでいるにも関わらず、同じdllを動的に読み込んでしまっているのが原因でした。
Plugin用のディレクトリにあったIPluginインタフェースを含むdllを削除し、正常に動作することを確認。


なぜこういう現象が起こるのかや、読み込んだときに例外が発生しないのはなぜかなど、気になることはあるのですが
上手く調査することができなかったため、とりあえずこういうものとして覚えておくことにします。
自分の場合は読み込んだ直後にインスタンス化もしていたため、一度処理を画面に戻してやったら上手くいくのかもしれませんが、それはまだ調査できていません。(dllをLoadFromした時点でアプリケーションの終了まで読み込まれっぱなしのような気がしないでもないですが。。。さて)