在测试中,我想添加一个注册表,然后排除我知道从注册表中扫描发现的类型。这是设置。如何从发现它的注册表扫描中排除外部类型?
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