温莎集装箱登记

时间:2011-07-18 03:49:42

标签: castle-windsor ioc-container

我似乎无法获得正确的配置服务。

我们的想法是注册所有具有标记接口IDao的类型,并将基类作为服务。

基类

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

实施课程      公共课导演道: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 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

试试这个

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