C# 与scan.TheCallingAssembly一起使用时,StructureMap找不到泛型类型
我有一个应用程序集,其中包含大量的通用IMapper接口。每个实现都有上述类型和两种方法来映射每个方向上的对象。 使用AutoMapper,我继续使用他们的文档,并在所述应用程序集中创建了一个IocRegistry类,该类应注册所有类型:C# 与scan.TheCallingAssembly一起使用时,StructureMap找不到泛型类型,c#,.net,structuremap,C#,.net,Structuremap,我有一个应用程序集,其中包含大量的通用IMapper接口。每个实现都有上述类型和两种方法来映射每个方向上的对象。 使用AutoMapper,我继续使用他们的文档,并在所述应用程序集中创建了一个IocRegistry类,该类应注册所有类型: public class IocRegistry : Registry { public IocRegistry() { Scan( scan => {
public class IocRegistry : Registry
{
public IocRegistry()
{
Scan(
scan =>
{
scan.TheCallingAssembly(); // Scan this assembly
scan.WithDefaultConventions();
scan.AddAllTypesOf(typeof(IMapper<,>));
});
}
}
公共类IocRegistry:注册表
{
公共图书馆()
{
扫描(
扫描=>
{
scan.TheCallingAssembly();//扫描此程序集
scan.WithDefaultConventions();
scan.AddAllTypesOf(typeof(IMapper));
});
}
}
如果我使用“WhatDiscan”方法,我可以看到配置:
IocRegistry扫描仪#1组件
- Mmu.Ddws.Application,版本=1.0.0.0,区域性=neutral,PublicKeyToken=null
- 默认I[Name]/[Name]注册约定
- 查找并注册实现Mmu.Ddws.Application.Common.Mapping.IMapper`2的所有类型
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;
}
}
内部静态类IOC初始化
{
内部静态IServiceProvider初始化IOC(IServiceCollection服务)
{
var container=新容器();
容器。配置(
配置=>
{
配置扫描(
扫描=>
{
scan.AssembliesFromApplicationBaseDirectory();
scan.LookForRegistries();
scan.WithDefaultConventions();
scan.AddAllTypesOf(typeof(IMapper));
});
config.Populate(服务);
});
Debug.WriteLine(container.whatdiscan());
var result=container.GetInstance();
返回结果;
}
}
我得到了完全相同的约定:
习俗
- StructureMap.Graph.FindRegistriesCanner
- 默认I[Name]/[Name]注册约定
- 查找并注册实现Mmu.Ddws.Application.Common.Mapping.IMapper`2的所有类型
然而,它是这样工作的。我在应用程序集中有接口和实现,因此,关于不同程序集中接口的大多数讨论似乎不适合这里。因此,我的最佳选择是,扫描调用程序集有点错误,但我找不到任何关于这一点的注释?有关详细信息,请参阅此以及使用打开泛型类型扫描类型的示例:有关详细信息,请参阅此以及使用打开泛型类型扫描类型的示例:不确定我是否误解了您的意思,但是扫描通常是有效的,如果我使用applicationbasedirectory或callingassembly中的assemblies,似乎会有所不同。另外,两者的扫描输出是相同的,所以这不是配置原因,不是吗?不确定我是否误解了您的意思,但扫描通常都能正常工作,如果我使用ApplicationBaseDirectory或CallingAssembly中的Assemblies,这似乎是不同的。而且两者的扫描输出是相同的,所以这不是配置原因,不是吗?我真的很惊讶这没有答案yetI我真的很惊讶这还没有答案