C# 自动映射字符串忽略奇怪值的列表
我有一个目标是列表,一个源是字符串。我将配置设置为忽略列表字段,但我一直将列表类型作为字符串值C# 自动映射字符串忽略奇怪值的列表,c#,automapper,C#,Automapper,我有一个目标是列表,一个源是字符串。我将配置设置为忽略列表字段,但我一直将列表类型作为字符串值 class MyClass { string MyList {get;set;} } class MyClassDto { List<string> MyList {get;set;} } //My cfg is like this cfg.CreateMap<MyClassDto, M
class MyClass
{
string MyList {get;set;}
}
class MyClassDto
{
List<string> MyList {get;set;}
}
//My cfg is like this
cfg.CreateMap<MyClassDto, MyClass>().ForMember(x => x.MyList, opt => opt.Ignore());
//I've mapped this way
ObjectMapper.Map(input, dest);
//and this way
var destClass = ObjectMapper.Map<MyClass>(input);
它不会抛出错误,但当其列表为空时,它会使我的字符串字段为:
System.Collections.Generic.List`1[System.String]
有人能解释一下原因吗?从您提供的示例来看,您使用的映射程序似乎不知道您的配置。在AutoMapper 9中,您可以使用配置创建映射器,例如:
var config = new MapperConfiguration(cfg =>
{
cfg.CreateMap<MyClassDto, MyClass>().ForMember(x => x.MyList, opt => opt.Ignore());
});
var mapper = config.CreateMapper();
var dest = mapper.Map<MyClass>(input);
有关更多信息,请参阅。重做会有所帮助。做一个我们可以执行并看到失败的测试。请把你的问题包括在你的完整源代码中,它可以被其他人编译和测试。你不能在这里测试什么?创建两个类,一个带字符串,一个带列表,在cfg中忽略,然后映射。你需要我的全部源代码吗?我知道你有如上所示的配置。如果它不知道忽略,我会不会出错?这就是奇怪的地方。我没有得到一个错误,它只是将类类型存储到字符串字段中。是的,您应该得到一个错误。你使用什么版本的AutoMapper?我不明白如果我忽略了,为什么会出现错误?是8.1.1你真的叫ObjectMapper.Map吗?根据ObjectMapper的定义,它是抽象的,而且它的映射还需要3个附加参数。