Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将上下文数据向下传递到依赖关系树_C#_Dependency Injection_Ninject_Inversion Of Control - Fatal编程技术网

C# 将上下文数据向下传递到依赖关系树

C# 将上下文数据向下传递到依赖关系树,c#,dependency-injection,ninject,inversion-of-control,C#,Dependency Injection,Ninject,Inversion Of Control,我正在使用ninject进行构造函数注入,我的代码的工作原理如下: 公共类MyRootClass { 公共MyRootClass( [SetContext(“catSession”)]IRepository catRep, [SetContext(“dogSession”)]i假设dogRep) { //在这里放些东西 } } 公共类GenericRepository:IRepository { 公共总报告(IUnitOfWork unitOfWork) { /

我正在使用
ninject
进行构造函数注入,我的代码的工作原理如下:

公共类MyRootClass
{
公共MyRootClass(
[SetContext(“catSession”)]IRepository catRep,
[SetContext(“dogSession”)]i假设dogRep)
{
//在这里放些东西
}                 
}
公共类GenericRepository:IRepository
{
公共总报告(IUnitOfWork unitOfWork)
{
//在这里放些东西
}
}
公共类MyUnitOfWork:IUnitOfWork
{
//sessionFactory应绑定到cat会话或dog会话
//会话,具体取决于调用方(MyRootClass)当前拥有的内容
//在上下文中设置
公共MyUnitOfWork([ReadContext]ISessionFactory sessionFactory)
{
//在这里放些东西
}
}
ISessionFactory
将为
ninject模块中绑定的每个会话(猫和狗)提供绑定。它们是命名绑定。我基本上希望能够请求将
IRepository
注入调用类,并让调用类指定存储库在幕后应该使用的会话


如何在
MyRootClass
中设置一些上下文变量,用于确定哪个会话
Ninject
应该注入依赖关系树的某个地方?

您可能需要重新考虑您的设计。您的设计增加了很多复杂性,使您的DI配置变得脆弱,并用DI特定的信息(属性)污染了您的应用程序代码。我同意,我想避开属性,但我不确定如何使用ninject实现这一点。你对从哪里开始有什么建议吗?你能解释一下“会话”在你的情况下以及为什么你需要同时进行两次不同的会话吗?它是一个NHibernate
ISessionFactory
。我们为每个需要通信的数据库设置了一个
SessionFactory
。我相信我的措辞在最初的帖子中有误导性,将会有一个猫和狗的会话工厂,而不是猫和狗的会话。我们的应用程序可能需要两个不同的
SessionFactory
对象,因为我们需要能够与不同类型的数据库通信@StevenSo,您的CatRepository将始终需要CatSessionFactory,或者您是否需要能够让CatRepository使用DogSessionFactory?