【发布时间】:2011-04-21 23:09:12
【问题描述】:
我有一堂课:
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>();
它本身不调用单参数构造函数...而是报错:
结构图异常代码:205 InstanceKey“f4fea539-2b04-4067-9c1a-990516268cea”缺少请求的实例属性“newConnectionString”
【问题讨论】:
标签: c# nhibernate dependency-injection structuremap ioc-container