다른 DbContext의 싱글 톤화 된 인스턴스를 제공 할 팩토리 클래스를 작성하려고합니다.어떻게 동적으로 개체를 인스턴스화 할 수 있습니까?
중요한 아이디어는 내가 필요로하는 모든 인스턴스를 보유 할 Dictionary<Type,DbContext>
이고, 사전에 유형을 찾고 이미 존재하는 경우이를 반환하는 메서드입니다 (GetDbContext(Type type)
). 그렇지 않으면 새 Type()을 만들어 해당 사전에 추가해야합니다.
public DbContext GetDbContext<T>() where T : new()
{
if (typeof(T).BaseType != typeof(DbContext))
throw new ArgumentException("Type is not a DbContext type");
if (!_contexts.ContainsKey(type))
_contexts.Add(typeof(T), new T());
return _contexts[type];
}
'type'은 다음과 같습니다
는 그러나, DbContext와 함께, 당신은 가장 가능성 때문에 .CreateInstance(Type type, params Object[] args)
아니면 일반적인 방법으로를 사용하여 연결 문자열을 전달하는 것이 좋습니다 정의되지 않았습니다. 나는 당신이'typeof (T)'를 의미한다고 생각합니다. –
@ Guffa Yeap, 그건 아주 간단하게하는 가장 간단한 방법입니다. 그러나 T : New() 부분은 어디에 있습니까? 전에는 본 적이 없었습니다 –
그리고'T : new()'내가'T : DbContext'라고 말하는 대신에 올바른 유형을 검사하지 않을 경우 어떻게 될까요? –