私は(IModule
がインターフェイスであるので、私は、プラグインが正常に動作します知っている)私は、動的に自分のアプリケーションにクラスをロードすることができますプラグインシステムを構築していますプラグインからクラスインスタンスを取得するにはどうすればよいですか?
var dll = Assembly.LoadFile("path/to/a/dll");
foreach (Type t in dll.GetExportedTypes()) {
if (typeof(IModule).IsAssignableFrom(t)) {
IModule mod = (IModule)Activator.CreateInstance(t);
}
}
だから、私の「メイン」アプリケーションから、私はプラグインでクラスを取得してインスタンス化できます。私が今好きなのは、プラグインから "メイン"アプリケーションのクラスに到達できることです。
Type.GetType("NameOfClass")
を試しましたが、それはnull
を返します。
これは問題ではないようです。どこにこだわっていますか? – adv12
クラスインスタンスの取得は、クラスの名前にのみ基づいています。 –
なぜこの方向に反射を使用するのですか?どうしてあなたのプラグインプロジェクトからアプリを参照し、クラスを直接参照しないでください? – adv12