我们的应用程序同时具有服务和代理服务,并且它们都继承自相同的界面。
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与服务位于同一名称空间中。
答案 0 :(得分:1)
你试过了吗?
.Where(t => t.Name.EndsWith("Service") && !t.Name.EndsWith("ProxyService"))
.AsImplementedInterfaces();