Ninject Kernel Factory: хорошая идея или нет - PullRequest
2 голосов
/ 23 декабря 2009

У меня есть приложение, которое в настоящее время разделено на уровни доступа к сервисам и данным (в работе находится слой MVC). Я пытаюсь уменьшить количество стандартного кода Ninject, необходимого для моих занятий.

Моей первой идеей был базовый класс для каждого типа бизнес-объекта (т. Е. UserBase), который будет расширен с помощью UserService и UserDAO. К сожалению, это помешало бы мне расширить любые другие классы (то есть класс AbstractService, расширенный всеми реализациями Service, класс AbstractDAO и т. Д.).

Моей второй идеей была простая фабрика, возвращающая IKernel для различных реализаций IModule, переданных ему. К сожалению, каждому классу потребуется переменная-член IKernel, но это решило проблему и позволило создать AbstractService и AbstractDAO.

    class NinjectKernelFactory
    {
        private NinjectKernelFactory()
        {
        }

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

Есть ли другие идеи для оптимизации моего использования Ninject?

1 Ответ

1 голос
/ 23 декабря 2009

Да, использование инъекций свойств - хороший способ. И если вы хотите получить еще более приятный дизайн, вы можете даже использовать саму ninject для создания контроллеров, создав собственную ControllerFactory и используя ядро ​​для получения контроллера экземпляра. Таким образом, контроллер будет уже инициализирован со свойством IKernel:

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

...