0

タイプのインスタンスを作成するために、登録された各タイプの静的メソッドを呼び出すためにデリゲートを使用するファクトリを作成しています。

ファクトリには、デリゲートの定義があります。

public delegate GridColumnBase ColumnFactoryMethod();

GridColumnBaseから継承する各タイプに静的CreateInstance()メソッドを実装したいと思います。CreateInstancestatic abstractメンバーを作成できないGridColumnBaseので、各クラスにこのメソッドを実装させるにはどうすればよいですか?

編集:これについてもう少し考えてみると、継承CreateInstance()するクラスの機能ではなく、GridColumnBaseファクトリに含めたいクラスの機能であるという結論に達しました。おそらく、基本クラス レベルでこれを強制する必要はありません。ファクトリ プロセスにどのように参加するかを決定するために、実装クラスに任せる必要があるかもしれません。つまり、委任したい関数をファクトリに渡します。これは私以外の誰にとっても意味がありますか? :)

4

2 に答える 2

0

私は結局、リフレクションの賢い使い方を選ぶことになりました。クレジットが必要な場所にクレジットを与えるために、私はこのソリューションhttp://www.matlus.com/high-performance-class-factory/を自分のニーズに合わせて変更しました。

これは問題に対する優れたエレガントなソリューションだと思います。プロファイラーの結果を比較すると、パフォーマンスはそれほど低下しません。

于 2012-12-10T08:38:04.773 に答える
0

各クラスが実装する別のインターフェイスを作成して、静的ファクトリ メソッドを強制することができます。各タイプは同じまたは類似のファクトリ メソッドを使用しますか?

于 2012-12-09T17:45:23.820 に答える