一般的なインターフェイスまたはクラスを作成し、このクラスまたはインターフェイスの異なるバージョンを非汎用的な方法で使用したい場合があります。たとえば、私は次のようなインターフェースを持っています:ジェネリッククラスとインターフェイスの非汎用バージョン
interface ICanCreate<T>
{
T NewObject();
}
これは、クラスをそのタイプのファクトリにすることができます。私は、一般的なファクトリクラスでこれらを登録したいので、私はこのような何か書いてみる:私は私の価値のために使うのですか種類の辞書で
public class Factory
{
private Dictionary<Type, ICanCreate> mappings; // what do I put here????
public void RegisterCreator<T>(ICanCreate<T> creator)
{
}
public T Create<T>()
{
}
}
を?私は何らかの設計原則が欠落しているかどうかは分かりませんが、これはco(ntra?)の分散とはかなり関係があることを認識しています。どんな助けやアイデアも高く評価されます。
?私がこのような状況にある場合、それはより洗練された解決策であると信じて、私は常にソリューションナンバー2に行きます。それですか、それとも重要ではありませんか? – Razzie
あなたは非ジェネリックインターフェイスに感覚的に入れられるメンバーがいますか?インターフェイスが*ちょうど* Createメソッドであれば、オブジェクトに固執します。非ジェネリックインターフェイスは実際にあなたに何も与えません。他のケースでは、適切なタイプの引数が分からない非ジェネリックインターフェイスを参照するだけで逃げることができます。この場合、明らかな利点が得られます。 –
クリア、コメントありがとう! – Razzie