如何从找到它的注册表扫描中从外部排除类型?

时间:2012-01-11 17:32:07

标签: structuremap

在测试中,我想添加一个注册表,然后排除我知道从注册表中的扫描中找到的类型。这是设置。

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类型,那么事情就会按预期工作,但我不想这样做。

1 个答案:

答案 0 :(得分:0)

我稍后会对此进行验证,但我觉得排除特定类型不起作用的原因是因为我没有告诉程序集在哪里扫描。我会在以后确定时更新这个答案。