さまざまな DbContext のシングルトン化されたインスタンスを提供するファクトリ クラスを構築しようとしています。
主なアイデアは、Dictionary<Type,DbContext>
必要なすべてのインスタンスを保持する とGetDbContext(Type type)
、辞書で型を検索し、既に存在する場合はそれを返すメソッドを持つことです。そうでない場合は、新しい Type() を作成し、対応する辞書に追加する必要があります。
どうすればいいのかわからないcontexts.Add(type, new type());
public class DbContextFactory
{
private readonly Dictionary<Type, DbContext> _contexts;
private static DbContextFactory _instance;
private DbContextFactory()
{
_contexts= new Dictionary<Type, DbContext>();
}
public static DbContextFactory GetFactory()
{
return _instance ?? (_instance = new DbContextFactory());
}
public DbContext GetDbContext(Type type)
{
if (type.BaseType != typeof(DbContext))
throw new ArgumentException("Type is not a DbContext type");
if (!_contexts.ContainsKey(type))
_contexts.Add(type, new type()); //<--THIS is what I have now Idea how to do
return _contexts[type];
}
}