Autofac自动注册服务和代理服务

时间:2014-07-22 14:30:43

标签: c# autofac

我们的应用程序同时具有服务和代理服务,并且它们都继承自相同的界面。

public class UserService : IUserService {}

public class UserProxyService : IUserService {}

在我们的应用程序中,我们需要能够独立地使用它们。我们这样做的方式是,如果我们使用服务,我们会注入接口,如果我们使用ProxyService,我们会注入具体的代理。

public class Foo
{
    public Foo(IUserService userService, UserProxyService userProxyService)
    {
        _userService = userService;
        _userProxyService = userProxyService;
    }
}

当我尝试自动注册我的服务时会出现问题

_containerBuilder.RegisterAssemblyTypes(_assembly)
                 .Where(t => t.Name.EndsWith("Service"))
                 .AsImplementedInterfaces();

以上显然不起作用。我希望Except允许某些内容符合

_containerBuilder.RegisterAssemblyTypes(_assembly)
                 .Where(t => t.Name.EndsWith("Service"))
                 .Except(x => x.Name.EndsWith("ProxyService"))
                 .AsImplementedInterfaces();

但是,它没有。

有没有办法自动注册具有上述角落案例的类?

注意:Services和ProxyServices位于不同的名称空间中,Interface与服务位于同一名称空间中。

1 个答案:

答案 0 :(得分:1)

你试过了吗?

.Where(t => t.Name.EndsWith("Service")  && !t.Name.EndsWith("ProxyService"))
.AsImplementedInterfaces();
相关问题