在測試中,我想添加一個註冊表,然後排除我知道從註冊表中掃描發現的類型。這是設置。如何從發現它的註冊表掃描中排除外部類型?
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類型,那麼事情會按預期工作,但我不想這樣做。
你能否提供你的班級結構? – Rookian 2012-01-12 17:35:11
@Rookian感謝您的回覆!我不確定你還需要看什麼。班級結構是什麼意思?這裏的要點是我有一個測試,配置SM添加註冊表(如圖所示)。它還定義了SM應該排除某種類型(RunBanks)的事實。註冊表掃描所有類型的接口。該RunBanks類型(明確排除在外)繼承自IHandles,但我期望在調用GetAllInstances()時不會初始化它,但它是。如果我仍然不清楚,讓我知道,當我有時間時,我會告訴你一個失敗的測試。 –
2012-01-13 21:05:09
在不同的程序集中有不同的實現嗎? – Rookian 2012-01-14 13:12:26