c# - Ninject 内核工厂 : Good Idea or Not

标签 c# ninject

我有一个应用程序,目前分为服务层和数据访问层(正在开发一个 MVC 层)。我正在尝试减少我的类(class)中所需的样板 Ninject 代码的数量。

我的第一个想法是为每个业务对象类型(即 UserBase)创建一个基类,它将由 UserService 和 UserDAO 扩展。不幸的是,这会阻止我扩展任何其他类(即由所有服务实现扩展的 AbstractService 类、AbstractDAO 类等)。

我的第二个想法是一个简单的工厂,为传递给它的各种 IModule 实现返回 IKernel。不幸的是,每个类都需要一个 IKernel 成员变量,但它解决了这个问题并允许创建 AbstractService 和 AbstractDAO。

    class NinjectKernelFactory
    {
        private NinjectKernelFactory()
        {
        }

        public static IKernel getKernel(params IModule[] modules)
        {
            IKernel kernel = new StandardKernel(modules);
            return kernel;
        }
    }

是否有任何其他想法可以优化我对 Ninject 的使用?

最佳答案

是的,使用属性注入(inject)是一个很好的方法。如果你想获得更好的设计,你甚至可以使用 ninject 本身来创建 Controller ,方法是创建自定义 ControllerFactory 并使用内核获取实例 Controller 。这样, Controller 就已经使用 IKernel 属性进行了初始化:

http://nayyeri.net/custom-controller-factory-in-asp-net-mvc

关于c# - Ninject 内核工厂 : Good Idea or Not,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1953852/

相关文章:

c# - Ninject 的 Bind.ToMethod 使用 CQRS 的 Unity 等价物

c# - 依赖注入(inject)如何应用于这种情况?

c# - 如何处理 MVVM 应用程序中的构造函数过度注入(inject)

c# - Hangfire 配置和 Ninject 配置

c# - 命名空间 'SQLite' 中不存在类型或命名空间名称 'System.Data'

Cef 扩展脚本的 Javascript 全局变量

C# Visual Studio 使用settings.settings进行mysql连接

c# - UserControl 中的 AJAX ScriptManager

.net - 配置NLog以英文写入异常消息

c# - 检测 SslStream 套接字断开连接