C# Ninject内核工厂:好主意还是坏主意
我有一个应用程序,目前分为服务层和数据访问层(MVC层正在开发中)。我正试图减少我的类中所需的样板Ninject代码的数量 我的第一个想法是为每个业务对象类型(即UserBase)创建一个基类,该类将由UserService和UserDAO扩展。不幸的是,这将阻止我扩展任何其他类(即,由所有服务实现扩展的抽象服务类、抽象DAO类等) 我的第二个想法是一个简单的工厂,返回传递给它的各种IModule实现的IKernel。不幸的是,每个类都需要一个IKernel成员变量,但它解决了这个问题,并允许创建AbstractService和AbstractDAOC# Ninject内核工厂:好主意还是坏主意,c#,ninject,C#,Ninject,我有一个应用程序,目前分为服务层和数据访问层(MVC层正在开发中)。我正试图减少我的类中所需的样板Ninject代码的数量 我的第一个想法是为每个业务对象类型(即UserBase)创建一个基类,该类将由UserService和UserDAO扩展。不幸的是,这将阻止我扩展任何其他类(即,由所有服务实现扩展的抽象服务类、抽象DAO类等) 我的第二个想法是一个简单的工厂,返回传递给它的各种IModule实现的IKernel。不幸的是,每个类都需要一个IKernel成员变量,但它解决了这个问题,并允许创
class NinjectKernelFactory
{
private NinjectKernelFactory()
{
}
public static IKernel getKernel(params IModule[] modules)
{
IKernel kernel = new StandardKernel(modules);
return kernel;
}
}
对于优化我对Ninject的使用,还有其他想法吗 是的,使用属性注入是一种很好的方法。如果你想得到更好的设计,你甚至可以使用ninject本身来创建控制器,方法是创建一个定制的ControllerFactory并使用内核来获得实例控制器。这样,控制器将已经用IKernel属性初始化:
我有点担心这里的新环境。这意味着每次调用getKernel时,都会创建一个新内核。应该是这样的吗?