绑定时如何访问目标对象?

时间:2011-04-26 13:10:09

标签: c# ninject

我有以下界面

interface IProfileRepo {

}

它的实施

public class DBProfileRepo : IProfileRepo {

  string _specialValue;

  public DBProfileRepo(IAuthorizedController authController) {

    _specialValue = authController.SomeValue;
  }
}

我的绑定是

Bind<IProfileRepo>()
         .To<DBProfileRepo>()
         .InRequestScope();

实现IAuthorizedController的我的MVC控制器正在接收这个DBProfileRepo注入,但是,DBProfileRepo需要此控制器作为构造函数参数。我怎样才能做到这一点?

我正在使用Ninject 2.2.1.0

1 个答案:

答案 0 :(得分:4)

您的对象之间存在循环依赖关系,这是您在设计对象层次结构时应该避免的。存储库不应该需要一个控制器实例,这根本没有意义。存储库是一种数据访问类,可以在不存在控制器的桌面或Silverlight等不同类型的应用程序中重用。它是控制器,应该需要一个存储库,而且几乎都是。

如果您需要将一些信息传递给仅在控制器中可用的存储库(例如请求参数),只需设计一个对象并将此对象从控制器传递给存储库方法,但不要传递整个控制器。