3
我有一個類層次結構像這樣(簡化):Ninject綁定約束,搜索後發現一個類型
class Connection
{
}
interface IService<T>
{
}
class ServiceImplementation : IService<int>
{
public ServiceImplementation(Connection)
{
}
}
interface IConnectionConfiguration
{
public void Configure(Connection c)
}
class ConnectionConfiguration : IConnectionConfiguration
{
public void Configure(Connection c)
}
在那裏我有IConnectionConfiguration和IService的多種實現。我想創建一個供應商/綁定其中:
- 構造一個新的Connection實例。
- GetAll並將其應用於Connection。
- 綁定指定IConnectionConfiguration實現使用的基礎上, 上構建
目前,我有一個提供者實現這樣IService類型:
public Connection CreateInstance(IContext context)
{
var configurations = context.Kernel.GetAll<IConnectionConfiguration>()
var connection = new Connection();
foreach(var config in configurations)
{
config.Configure(connection);
}
return connection;
}
但是,當我嘗試爲IConnectionConfiguration做上下文綁定,它沒有父請求或父上下文...
Bind<IConnectionConfiguration>().To<ConcreteConfiguration>().When(ctx => {
// loop through parent contexts and see if the Service == typeof(IService<int>);
// EXCEPT: The ParentRequest and ParentContext properties are null.
});
我在這裏做錯了什麼?我可以用ninject做這個嗎?
得益於新的請求延期,我不希望有一個擴展添加到項目,有沒有辦法可以「手動」創建保存上下文的子請求? – icedtoast
爲什麼你不想添加擴展?他們是Ninject項目的一部分。並確定有一種方法可以手動執行。做什麼在擴展中完成。但這樣你將不得不自己維護你的代碼。 –