私はオブジェクト階層を持っています:
MyObject
+Variable
+etc.
(したがって、MyObject は基本クラスで、Variable はサブクラスの 1 つです)。
特定のタイプの辞書があります
private ConcurrentDictionary<string, Variable> variables
= new ConcurrentDictionary<string, Variable>();
等
そして、さまざまなリストをすべて 1 つの高レベル辞書に入れたいと思います。ここで、すべての特定のリストを見つけることができます。
private Dictionary<Type, ConcurrentDictionary<string, MyObject>> objects
= new Dictionary<Type, ConcurrentDictionary<string, MyObject>>();
しかし、特定の辞書を高レベルの辞書に追加することはできません:
objects.Add(typeof(Variable), variables); // DOES NOT COMPILE
私がやりたいことをする手段はありますか?変数リストを次のように定義したくありません
private ConcurrentDictionary<string, MyObject> variables
= new ConcurrentDictionary<string, MyObject>(); // WORKS, BUT NOT NICE TO USE
したがって、特定のリストを使用してタイプ固有の操作を実行するだけでなく、「オブジェクト」ディクショナリを介してすべてのオブジェクト タイプで一般的な操作を有効にして、サブタイプごとにすべてを手動でコーディングする必要がないようにします。
たとえば、次のようなメソッドを定義したいと思います。
public List<Variable> GetVariables()
{
return variables.Values.ToList();
}
したがって、変数オブジェクトがすべて変数であることがわかっている場合は、変数オブジェクトを使用できます。