私は、アプリケーションが実行時にインターフェースを実装するクラスを作成して、プラグ可能な機能を許可する「プラグイン」システムを実装しました。
プラグイン アセンブリ内で指定されたインターフェイスを実装するすべてのクラスで Activator.CreateInstance を使用して、これを実現しています。
現時点では、クラスの実装を 1 つだけ使用しており、そのために 2 つのコンストラクター引数があり、それらを Activator.CreateInstance 呼び出しに含めています。
instanceList.Add((Foo)Activator.CreateInstance(_TypeList[typeKey], new object[] { arg1, arg2 }));
このコンストラクター署名を使用しない実装が追加された場合、これが後で問題を引き起こす可能性があることを認識しています。これを処理するのに最適な状況は何ですか。
コンストラクターがこの署名を使用する必要があることをドキュメントを介して明示的に言い、それを try/catch で囲みますか?
または、クラスが持つコンストラクターを呼び出す方法はありますか? どういうわけかコンストラクターの引数を一致させる必要があることを念頭に置いてください。
または...引数を静的クラスに静的プロパティとして配置することにより、コンストラクターの引数を回避しますか?