2012-01-11 20 views
1

在測試中,我想添加一個註冊表,然後排除我知道從註冊表中掃描發現的類型。這是設置。如何從發現它的註冊表掃描中排除外部類型?

ObjectFactory.Configure(x => 
{ 
    x.AddRegistry<DefaultConventionsRegistry>(); 
    x.Scan(scanner => scanner.ExcludeType<RunBanks>()); 
}); 

這裏的註冊表:

public class DefaultConventionsRegistry : Registry 
{ 
    public DefaultConventionsRegistry() 
    { 
     Scan(scanner => 
     { 
      scanner.Assembly(AssemblyNames.WebAssemblyName); 
      scanner.WithDefaultConventions(); 
      scanner.AddAllTypesOf<IHandles>(); 
     }); 
    } 
} 

RunBanks並不直接從IHandles繼承。它繼承自一個抽象基類,它繼承自一個開放的通用接口,最終從IHandles繼承。

我期待從容器中排除的RunBanks但如果我叫

ObjectFactory.GetAllInstances<IHandles>(); 

類型存在RunBanks的一個實例。如果我明確排除DefaultConventionsRegistry中的RunBanks類型,那麼事情會按預期工作,但我不想這樣做。

+0

你能否提供你的班級結構? – Rookian 2012-01-12 17:35:11

+0

@Rookian感謝您的回覆!我不確定你還需要看什麼。班級結構是什麼意思?這裏的要點是我有一個測試,配置SM添加註冊表(如圖所示)。它還定義了SM應該排除某種類型(RunBanks)的事實。註冊表掃描所有類型的接口。該RunBanks類型(明確排除在外)繼承自IHandles,但我期望在調用GetAllInstances ()時不會初始化它,但它是。如果我仍然不清楚,讓我知道,當我有時間時,我會告訴你一個失敗的測試。 – 2012-01-13 21:05:09

+0

在不同的程序集中有不同的實現嗎? – Rookian 2012-01-14 13:12:26

回答

0

我將在稍後驗證,但我有一種感覺,排除特定類型的原因不起作用是因爲我沒有告訴程序集在哪裏掃描。稍後當我確定發現時,我會更新這個答案。

+0

看起來像沒有解決它。我仍然難住在這裏。 – 2012-01-13 21:48:26