2010-07-12 3 views
0

Мои контроллеры напрямую используют службы, а не репозитории. Услуги размещены в проекте ApplicationServices:s # arp architecture query - сервисы и репозитории

public XYZService 
     (
      IBlaRepository BlaRepository, 
      IBla1Repository Bla1Repository 
     ) 
     { 
      Check.Require(BlaRepository != null, "BlaRepository may not be null"); 
      this.BlaRepository = BlaRepository; 
     .... 

Это работает нормально.

Хранилища реализуется следующим образом:

public interface IBlaRepository : IRepository<Bla> (placed in Core/DataInterfaces) 

public class BlaRepository : Repository<Bla>, IBlaRepository (placed in Data) 

Иногда я могу просто использовать «обычный» острый репозиторий архитектуры. Есть ли способ передать их в вышеуказанную службу? Должен ли я их регистрировать?

Для уточнения этого - застройщик службы выглядит следующим образом:

public XYZService 
     (
      Repository<UUU> UUURepository 

...

Надеется, что это имеет смысл.

Спасибо!

Крисом

+0

Хм, я думаю, что это будет сделано автоматически S # АРП через ComponentRegistrar.AddComponentsTo, что делает container.AddComponentLifeStyle ("repositoryWithTypedId", TypeOf (IRepositoryWithTypedId <,>), TypeOf (RepositoryWithTypedId <,>), LifestyleType.PerWebRequest); Удалено ли в последних версиях S # arp? – queen3

+0

Спасибо. Если я реализую интерфейсы, как описано, все работает «автоматически» - я немного борюсь с «простыми s # arp reps». – cs0815

ответ

2

Крис, все, что вам нужно будет сделать, это обратиться к репозиторию как таковой:

private readonly IRepository<Bla> _blaRepository; 

    public BlaService(IRepository<Bla> blaRepository) 
    { 
     _blaRepository = blaRepository; 
    } 

Это позволит Виндзор вводить репозиторий в контроллер с ничего другого, необходимого вам ,

Alec

+0

mmmh Думаю, я попробовал это - должен проверить. Спасибо, в любом случае. – cs0815

Смежные вопросы