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