结构图在与scan.CallingAssembly

时间:2017-08-06 18:59:50

标签: c# .net structuremap

我有一个Application-Assembly,它包含一些通用的IMapper接口。每个实现都有类型和两种方法来映射每个方向上的对象。 使用AutoMapper,我继续使用他们的文档并在所述Application-Assembly中创建了一个IocRegistry-Class,它应该注册所有类型:

public class IocRegistry : Registry
{
    public IocRegistry()
    {
        Scan(
            scan =>
            {
                scan.TheCallingAssembly(); // Scan this assembly
                scan.WithDefaultConventions();
                scan.AddAllTypesOf(typeof(IMapper<,>));
            });
    }
}

如果我使用&#34; WhatDidIScan&#34; -method,我可以看到配置:

  

IocRegistry Scanner#1 Assemblies

     
      
  • Mmu.Ddws.Application,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null
  •   
     

约定

     
      
  • 默认I [名称] / [名称]注册惯例
  •   
  • 查找并注册实现Mmu.Ddws.Application.Common.Mapping.IMapper`2的所有类型
  •   

然而,一旦我尝试获得这样一个Mapper的实例,我就会得到它没有找到它的错误。

有趣的是,如果我通过以下方式在我的WebServices-Assembly上注册接口,这是起点:

internal static class IocInitialization
{
    internal static IServiceProvider InitializeIoc(IServiceCollection services)
    {
        var container = new Container();

        container.Configure(
            config =>
            {
                config.Scan(
                    scan =>
                    {
                        scan.AssembliesFromApplicationBaseDirectory();
                        scan.LookForRegistries();
                        scan.WithDefaultConventions();
                        scan.AddAllTypesOf(typeof(IMapper<,>));
                    });

                config.Populate(services);
            });

        Debug.WriteLine(container.WhatDidIScan());
        var result = container.GetInstance<IServiceProvider>();
        return result;
    }
}

我得到了完全相同的约定:

  

约定

     
      
  • StructureMap.Graph.FindRegistriesScanner
  •   
  • 默认I [名称] / [名称]注册惯例
  •   
  • 查找并注册实现Mmu.Ddws.Application.Common.Mapping.IMapper`2的所有类型
  •   

然而,这种方式有效。我在应用程序组装中有接口和实现,因此大多数讨论围绕不同程序集中的接口解决,似乎不适合这里。所以我最好的选择是,扫描召集大会是有点不对的,但是我找不到有关此问题的任何评论?

1 个答案:

答案 0 :(得分:0)

有关详细信息和使用开放泛型类型扫描的示例,请参阅此处:http://structuremap.github.io/generics/