使用StructureMap扫描外部模块中公开的实现

时间:2013-06-10 23:50:04

标签: structuremap masstransit

我正在尝试使用StructureMap 2.6.4扫描模块文件夹(dll,运行时已知的位置),用于任何关闭某个接口的模块。在这种情况下,它是来自MassTransit的Consumes.Context。

我的类,其中可能有许多实现,在modules文件夹中:

    public class MyConsumer : Consumes<MyMessage>.Context
    {

        public void Consume(IConsumeContext< MyMessage > message)
        {
            // Do some stuff

            message.Respond(response);
        }
    }

我的StructureMap扫描仪:

        container.Configure(x => x.Scan(y =>
        {
            y.TheCallingAssembly();
            y.WithDefaultConventions();
            y.LookForRegistries();
            y.ConnectImplementationsToTypesClosing(typeof(Consumes<>.Context));
            y.AddAllTypesOf(typeof(Consumes<>.Context));
            y.AssembliesFromPath(@"..\..\..\Web\Modules\bin\debug");         
        }));

当我查看容器中的对象时,我没有看到任何Consumes&lt;&gt; .Context实现。我确实在调试文件夹中看到了来自其他dll的对象。

但是,如果我将我的模块的dll复制到子目录中并像这样扫描:

y.AssembliesFromPath(@"..\..\..\Web\Modules\bin\debug\test")

扫描仪拾取我的物体。

失败:

y.AssembliesFromPath(@"..\..\..\Web\Modules\bin\debug");

使用:

y.AssembliesFromPath(@"..\..\..\Web\Modules\bin\debug\test");

为什么将我的dll放在子目录中工作而不能在父目录中工作?

我应该如何在Modules目录中扫描Consumes.Context的实现? 谢谢!

0 个答案:

没有答案