У меня есть класс:
public class SystemQuery<T> : ISystemQuery<T> where T : class, IUIView {
protected ISession session;
protected ICriteria baseCriteria;
public SystemQuery(SessionContext sessionContext) {
this.session = sessionContext.Session;
this.baseCriteria = session.CreateCriteria<T>();
}
public SystemQuery(SessionContext sessionContext, string newConnectionString)
{
var connection = new SqlConnection(newConnectionString);
connection.Open();
this.session = sessionContext.Session.SessionFactory.OpenSession(connection);
this.baseCriteria = session.CreateCriteria<T>();
}
StructureMap знает, как создавать SessionContext, ISession и ICriteria.
В другом классе, который у меня есть (я пытаюсь установить начальное состояние вэто один случай):
public T BuildQuery<T>() where T: ISystemQuery {
return container.GetInstance<T>();
}
public T BuildQuery<T>(string newConnectionString) where T: ISystemQuery
{
var dict = new Dictionary<string, object>();
dict.Add("newConnectionString",newConnectionString);
return container.GetInstance<T>(new ExplicitArguments(dict));
}
Проблема в том, что он не перегружает конструктор, когда он создает экземпляр, когда он сам вызывает
container.GetInstance<T>();
, он не вызывает единственный параметрконструктор ... вместо этого получите ошибку:
Код исключения StructureMap: 205 Отсутствует запрошенное свойство экземпляра "newConnectionString" для InstanceKey "f4fea539-2b04-4067-9c1a-990516268cea"