StructureMap 2.6.1.0装配扫描问题

时间:2010-07-21 13:27:06

标签: assemblies structuremap

我正在尝试使用StructureMap在运行时扫描包含Registry类实现的程序集,但我遇到了问题。

如果一个dll包含一个Registry类,但是还包含对运行时不存在的dll的引用(比如运行时不需要的Rhino.Mocks dll),那么StructureMap将抛出一个StructureMapConfiguration异常。 Assembly.GetExportedTypes()调用。

有没有办法在StructureMap中避免这种行为?

ObjectFactory.Initialize(x =>
{
    x.Scan(s =>
    {
        s.AssembliesFromApplicationBaseDirectory();
        s.LookForRegistries();
    });
});

1 个答案:

答案 0 :(得分:1)

通过反射器我发现通过调用graph.Log.AssertFailures()在程序集扫描期间可能发生的任何异常(包括在assembly.GetExportedTypes()期间抛出的那些是你引用的那些异常to)被抛出作为一个大例外。我还没有找到任何表明此行为可以某种方式关闭的东西。我发现的是,如果你发现异常,扫描实际上会成功完成它设法扫描的任何程序集。在继续下一个程序集之外,当调用GetExportedTypes()(这是一个框架方法)时,StructureMap实际上无法对抛出的异常做任何事情。如果你不介意“丢失”一些程序集只是抓住异常并继续前进。

public void Configure(操作配置) { 锁(这个)     {         ConfigurationExpression expression = new ConfigurationExpression();         配置(表达);         PluginGraph graph = expression.BuildGraph();         的 graph.Log.AssertFailures();         this._interceptorLibrary.ImportFrom(graph.InterceptorLibrary);         this._pipelineGraph.ImportFrom(图形);     } }