この号のタイトルを考えるのに苦労しました。これが、この問題を説明するための最善の方法です。
ここでは一般的なクラス名を使用しましたが、ポイントは同じです。
Common.dll という名前の DLL には、FormControl という名前のクラスがあります。ボタンバーと多数のフォーム要素が表示されます。次に、MButtonBar というクラスを作成します。このクラスには、表示する MButton オブジェクトのコレクションが含まれています。
FormControl を使用する 2 つの個別のアプリケーションがあります。これらは関連するアプリケーションです。ただし、アプリケーションの 1 つで、XButton と呼ばれるボタンのインスタンスを作成する必要があり、XButton は MButton から派生しています。
問題は、FormControl がボタン バーを作成し、ボタン バーがボタンを作成することです。これらはすべて Common.dll 内にあり、XButton を認識していません。
Common.dll のボタン バーで XButton のインスタンスを作成する方法はありますか? Activator.CreateInstance またはファクトリを使用する任意の方法。インスタンス化するクラス名を渡すエレガントなメカニズム。
別の解決策は、新しい FormControl を派生させ、ボタン バーの作成メソッドをオーバーライドすることです。次に、新しいボタン バーを派生させ、派生した FormControl からこのタイプのボタン バーを作成します。次に、派生ボタン バーで create button メソッドをオーバーライドして XButton を作成できますが、これは大変な作業のように思えます。