2011-07-18 63 views
0

我似乎得不到適當的服務來配置。溫莎集裝箱註冊

這個想法是註冊所有具有標記接口IDao的類型,並且有基類是服務。

基類

public abstract class DirectorDaoContract : RepositoryBase<Director> 
{ 
    public abstract Director Get(int id); 
} 

實現類 公共類DirectorDao:DirectorDaoContract,IDao {

public override Director Get(int directorId) 
    { 
    ..... 
    } 
} 

的想法是,一個

Resolve<DirectorDaoContract>() 

將返回DirectorDao

我當前的嘗試

container.Register(AllTypes.FromAssemblyNamed(dataAssembly) 
     .BasedOn<IDao>) 
     .WithService.Base() 
     .Configure(c => c.LifeStyle.PerThread)); 

不管是什麼我都試過,我不能得到正確的服務。

回答

0

試試這個

container.Register(AllTypes.FromAssemblyNamed(dataAssembly(
    .BasedOn(typeof(DirectorDaoContract)) 
    .WithService.Select((t,b) => t.GetInterfaces().Where(d => d == typeof(IDao)).AsEnumerable<Type>()); 
+0

這需要我註冊的所有基本類型的個性。目標是根據標記界面註冊類型。 –

1
container.Register(AllTypes.FromAssemblyNamed(dataAssembly) 
     .BasedOn<IDao>() 
     .WithService.FromInterface() 
     .Configure(c => c.LifeStyle.PerThread)); 
+0

這注冊的實際類型不是基地作爲服務 –

+0

是的,我錯過了你提到'DirectorDao'的部分(你的格式很混亂)。無論如何,看到更新的答案。 –