Castle Windsor“默认界面”需要什么?

时间:2013-12-30 22:09:41

标签: dependency-injection repository castle-windsor

我找到了这段代码:

public class RepositoriesInstaller : IWindsorInstaller
{
   public void Install(IWindsorContainer container, IConfigurationStore store)
   {
      container.Register(AllTypes.FromAssemblyNamed("Acme.Crm.Data")
                            .Where(type => type.Name.EndsWith("Repository"))
                            .WithService.DefaultInterface()
                            .Configure(c => c.LifeStyle.PerWebRequest));
   }
}

... here in the official docs

...并将其修改为:

public class RepositoriesInstaller : IWindsorInstaller
{
    public void Install(IWindsorContainer container, IConfigurationStore store)
    {
        container.Register(Classes.FromThisAssembly()  
                                  //AllTypes.FromAssemblyNamed("Acme.Crm.Data")
                                  .Where(type => type.Name.EndsWith("Repository"))
                                  .WithService.DefaultInterface()
                                  .Configure(c => c.LifeStyle.PerWebRequest));
    }
}

...但是“DefaultInterface()”无法识别或当前可解析。

我添加了“使用Castle.MicroKernel.Lifestyle;”因为那里有bit me before但在Mudville没有欢乐。

我需要使用什么语句来阐明/发现/解析“DefaultInterface”?

1 个答案:

答案 0 :(得分:3)

官方文档中似乎有拼写错误。我认为你需要放置'DefaultInterfaces'而不是'DefaultInterface'。

public class RepositoriesInstaller : IWindsorInstaller
{
    public void Install(IWindsorContainer container, IConfigurationStore store)
    {
        container.Register(Classes.FromThisAssembly()  
                              //AllTypes.FromAssemblyNamed("Acme.Crm.Data")
                              .Where(type => type.Name.EndsWith("Repository"))
                              .WithService.DefaultInterfaces()
                              .Configure(c => c.LifeStyle.PerWebRequest));
    }
}