List
多くの種類のオブジェクトが含まれていますが、これらの型は共通の基本クラスModelBase
を1つ持っています。各タイプの一般的なList
タイプは一意です。つまり、同じタイプを含む2つのリストはありません。リストを取得<T>コレクションから(C#)
最後に、私は、ジェネリック型として、またはパラメータのいずれかとしてModelBase
から派生したオブジェクトの型を取り、そのジェネリック型のそれぞれのList<TModel>
を返すpublic List<TModel> GetModelList<TModel>()
のような機能を持っていると思います。
これを達成するためにはどのようなオプションが必要ですか?
IはDictionary<Type, List<ModelBase>>
について考えたが、その後、私は私はそれを再度フェッチする際格納する基本クラスタイプModelBase
及び他の方法ラウンドにサブクラスタイプ(例えばAreaModel
)からキャスト。私は、保存する前に、または読み込んだ後にリストをキャストする必要はありません。これを単純化する方法はありますか?私たちが引数として渡したいタイプのList
を渡しているので、キャストを自動化できるかどうか?
、「ConcurrentDictionaryは、スレッドの安全性にのみ関連ですが、私はドン本当にそれが必要です。通常の辞書の代わりにそれを選んだ理由は何ですか? 「それぞれのタイプに対して1つのリストインスタンスしか作成されていないことを確認してください」という意味を理解していません。これは通常の辞書でも同じですか、そうではありませんか? –
通常の辞書の代わりにConcurrentDictionaryを使うなど、自分のクラスをスレッドセーフなものにすることができれば、そうします。そして、もしあなたがシングルスレッド環境でしか使用しないなら、通常の辞書は正常に動作しますが、便利な '.GetOrAdd(..)'メソッドはありません。 – Maarten