我在我的MVC应用程序,它工作正常以下代码。城堡温莎注册组件匹配相同的服务
container.Register(Component.For<CountryServiceBase>()
.ImplementedBy<CountryService>()
.LifestylePerWebRequest());
温莎城堡创建一个组件
CountryService/CountryServiceBase
我这里控制器得到一个实例化对象:
public class MyController : MainController
{
public CountryServiceBase CountryService {get; set;} // instantiate by Ioc : OK
我的问题是,我有很多的类注册。因此,使用温莎城堡我做了以下内容:
container.Register(
Types
.FromAssemblyNamed("mynamespace")
.BasedOn(typeof(ServiceBase<>))
.WithService.Base()
.LifestylePerWebRequest());
温莎城堡创建我的部件
CountryService/ServiceBase<Country>
CountryServiceBase/ServiceBase<Country>
但我的MVC应用程序等待一个CountryService/CountryServiceBase,我不知道如何指定温莎城堡是它可以匹配CountryServiceBase到CountryService作为这两个类(其中一个是抽象类)继承ServiceBase
它甚至有可能吗?
注:我发布了一个类似的问题,但我的调查导致更准确的一个,所以我删除了旧的。
尝试更改'公共CountryServiceBase CountryService {get;设置;}'通过'公共ServiceBase CountryService {get;设置;}' –
它会工作,但在抽象类CountryServiceBase中,我有几个声明的方法。否则它会起作用。 – AMS
也许'BasedOn(typeof(CountryServiceBase))'? –