我在我的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))'? –