Виндзорская контейнерная регистрация - PullRequest
0 голосов
/ 18 июля 2011

Не получается настроить службу для правильной настройки.

Идея состоит в том, чтобы зарегистрировать все типы, которые имеют интерфейс маркера IDao и имеют базовые классы, являющиеся службой.

базовый класс

public abstract class DirectorDaoContract : RepositoryBase<Director>
{
    public abstract Director Get(int id);
}

реализующий класс Публичный класс DirectorDao: DirectorDaoContract, IDao {

    public override Director Get(int directorId)
    {
    .....
    }
}

Идея в том, что

Resolve<DirectorDaoContract>() 

вернул бы DirectorDao

моя текущая попытка

 container.Register(AllTypes.FromAssemblyNamed(dataAssembly)
      .BasedOn<IDao>)
      .WithService.Base()
      .Configure(c => c.LifeStyle.PerThread));

Независимо от того, что я пробовал, я не могу получить правильную услугу.

Ответы [ 2 ]

1 голос
/ 18 июля 2011
 container.Register(AllTypes.FromAssemblyNamed(dataAssembly)
      .BasedOn<IDao>()
      .WithService.FromInterface()
      .Configure(c => c.LifeStyle.PerThread));
0 голосов
/ 18 июля 2011

попробуйте

container.Register(AllTypes.FromAssemblyNamed(dataAssembly(
  .BasedOn(typeof(DirectorDaoContract))
  .WithService.Select((t,b) => t.GetInterfaces().Where(d => d == typeof(IDao)).AsEnumerable<Type>());
...