C# 自动制版机:“;缺少类型映射配置或不支持的映射“;

C# 自动制版机:“;缺少类型映射配置或不支持的映射“;,c#,automapper,C#,Automapper,assertconfigurationsvalid传递,并且正在尝试的对象已完全填充,但我在调用的第一个映射请求中收到错误 我在试着绘制地图 Survey ToLoad = Mapper.Map<Survey>(U); Survey ToLoad=Mapper.Map(U); 我正在用下面的代码初始化automapper //Lots of other Maps Mapper.Initialize(cfg => cfg.CreateMap<User, SMUser&g

assertconfigurationsvalid传递,并且正在尝试的对象已完全填充,但我在调用的第一个映射请求中收到错误

我在试着绘制地图

Survey ToLoad = Mapper.Map<Survey>(U);
Survey ToLoad=Mapper.Map(U);
我正在用下面的代码初始化automapper

//Lots of other Maps
Mapper.Initialize(cfg => cfg.CreateMap<User, SMUser>()
      .ForMember(t => t.AccountType, s => s.MapFrom(so => so.AccountType != null ? so.AccountType : String.Empty))
      .ForMember(t => t.Username, s => s.MapFrom(so => so.Username != null ? so.Username : String.Empty)));


Mapper.Initialize(cfg => cfg.CreateMap<SurveyMonkey.Containers.Survey, Survey>().ForMember(t => t.AnalyzeUrl, s => s.MapFrom(so => so.AnalyzeUrl != null ? so.AnalyzeUrl : String.Empty))
      .ForMember(t => t.Category, s => s.MapFrom(so => so.Category != null ? so.Category : String.Empty))
      .ForMember(t => t.CollectUrl, s => s.MapFrom(so => so.CollectUrl != null ? so.CollectUrl : String.Empty))
      .ForMember(t => t.EditUrl, s => s.MapFrom(so => so.EditUrl != null ? so.EditUrl : String.Empty))
      .ForMember(t => t.Language, s => s.MapFrom(so => so.Language != null ? so.Language : String.Empty))
      .ForMember(t => t.Preview, s => s.MapFrom(so => so.Preview != null ? so.Preview : String.Empty))
      .ForMember(t => t.SummaryUrl, s => s.MapFrom(so => so.SummaryUrl != null ? so.SummaryUrl : String.Empty))
      .ForMember(t => t.Title, s => s.MapFrom(so => so.Title != null ? so.Title : String.Empty)) 
      //Some more members
);

//LISTS
Mapper.Initialize(cfg => cfg.CreateMap<List<SurveyMonkey.Containers.Collector>, List<Collector>>());

//Lots of other List Maps
//许多其他地图
初始化(cfg=>cfg.CreateMap())
.ForMember(t=>t.AccountType,s=>s.MapFrom(so=>so.AccountType!=null?so.AccountType:String.Empty))
.ForMember(t=>t.Username,s=>s.MapFrom(so=>so.Username!=null?so.Username:String.Empty));
初始化(cfg=>cfg.CreateMap().formMember(t=>t.AnalyzeUrl,s=>s.MapFrom(so=>so.AnalyzeUrl!=null?so.AnalyzeUrl:String.Empty))
.ForMember(t=>t.Category,s=>s.MapFrom(so=>so.Category!=null?so.Category:String.Empty))
.ForMember(t=>t.CollectUrl,s=>s.MapFrom(so=>so.CollectUrl!=null?so.CollectUrl:String.Empty))
.ForMember(t=>t.EditUrl,s=>s.MapFrom(so=>so.EditUrl!=null?so.EditUrl:String.Empty))
.ForMember(t=>t.Language,s=>s.MapFrom(so=>so.Language!=null?so.Language:String.Empty))
.ForMember(t=>t.Preview,s=>s.MapFrom(so=>so.Preview!=null?so.Preview:String.Empty))
.ForMember(t=>t.SummaryUrl,s=>s.MapFrom(so=>so.SummaryUrl!=null?so.SummaryUrl:String.Empty))
.ForMember(t=>t.Title,s=>s.MapFrom(so=>so.Title!=null?so.Title:String.Empty))
//还有一些成员
);
//列表
初始化(cfg=>cfg.CreateMap());
//很多其他的列表地图

我使用的是Nuget(5.2.0)的最新稳定版本。

仅调用
映射器。对整个配置初始化一次
,否则将覆盖它

您可以将配置包装在继承
AutoMapper.Profile
的类中:

using AutoMapper;

public class MyAutoMapperProfile : Profile {

    protected override void Configure() {
        CreateMap<User, SMUser>();
        CreateMap<SurveyMonkey.Containers.Survey, Survey>();
        CreateMap<List<SurveyMonkey.Containers.Collector>, List<Collector>>();
    }
}
使用AutoMapper;
公共类MyAutoMapperProfile:Profile{
受保护的覆盖无效配置(){
CreateMap();
CreateMap();
CreateMap();
}
}
然后使用此配置文件初始化映射程序:

Mapper.Initialize(cfg => {
    cfg.AddProfile<MyAutoMapperProfile>();
    cfg.AddProfile<OtherAutoMapperProfile>();
});
Mapper.Initialize(cfg=>{
AddProfile();
AddProfile();
});

我在ConfigureServices方法中的启动类中遇到了相同的错误

services.AddAutoMapper(typeof(startup))=>启动类

正因为如此,我的automapper profile类(在本例中是从
automapper.Propfle
继承的类)
公共类MyAutoMapperProfile:Profile
)未被读取

为了解决这个问题,我将
startup
类替换为
MyAutoMapperProfile
,如下所示
services.AddAutoMapper(typeof(MyAutoMapperProfile))


您可以调试并检查automapper映射类是否被命中。

您会遇到什么错误?这非常有效。(除了配置受保护而非公开外?)您是对的,它受保护,我编辑了答案。非常感谢:)