Ninject с помощью Ria Services (Custom DomainService) - PullRequest
0 голосов
/ 28 февраля 2011

У меня есть ситуация, когда я обращаюсь к репозиториям в моих пользовательских доменных службах, и я бы предпочел, чтобы они вводились.

* 1003 Т.е. *

    [EnableClientAccess()]
    public class UserDomainService : DomainService
    {

    public IUserRepository repo;

    public UserDomainService(IUserRepository userRepo)
        : base()
    {
       repo = userRepo;            
    }

    public IEnumerable<User> GetUsers()
    {
        return this.repo.GetUsers();
    }

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

1 Ответ

0 голосов
/ 01 марта 2011

Я был на правильном пути с Ninject.Extensions.Web - расширением NinjectHttpApplication вместо стандартного Global.asax.

Однако, это не работает, потому что не предоставляет KernelContainer (доступ к вашему вновь определенному модулю Ninject), так что вы не можете внедрить свою службу пользовательского домена, как если бы вы использовали базовый класс страницы это обеспечивает.

Итак ...

В итоге я создал аналогичный класс, расширяющий HttpApplication, который публично предоставляет статическое ядро. Затем я создал службу базового домена, от которой наследуются все мои доменные службы. Внутри конструктора я затем вызываю мой экземпляр службы домена:

    [EnableClientAccess()]
    public class BaseDomainService : DomainService
    {
        public BaseDomainService()
           : base()
        {
            MyCustomStaticKernelContainer.Inject(this);
        }
    }
...