C# 自动映射自定义映射配置问题

C# 自动映射自定义映射配置问题,c#,automapper,C#,Automapper,我有两个类,两个类中都有“Points”成员,但其中一个类中的Points是string type,另一个类中的string[][] 我使用Automapper和下一个配置 x.CreateMap<ProblemViewModel, Problem>() .ForMember(dest => dest.Points, src => src.MapFrom{PointsForDbReso

我有两个类,两个类中都有“Points”成员,但其中一个类中的Points是string type,另一个类中的string[][]

我使用Automapper和下一个配置

x.CreateMap<ProblemViewModel, Problem>()
                    .ForMember(dest => dest.Points,
                        src => src.MapFrom{PointsForDbResolver}())
                    .ReverseMap()
                .ForMember(dest => dest.Points,
                    src => src.MapFrom{PointsForViewResolver}());
x.CreateMap()
.FormMember(目标=>目标点,
src=>src.MapFrom{PointsForDbResolver}())
.ReverseMap()
.FormMember(目标=>目标点,
src=>src.MapFrom{PointsForViewResolver}());
使用自定义值解析程序“PointsForDbResolver”和“PointsForViewResolver”(两者都是IValueResolver),可以相互转换提到的类型。 但我得到了一个错误:

异常详细信息:System.InvalidOperationException:序列不包含任何元素


您能帮我解决这个问题吗?这个转换是否可以由Automapper完成。

接下来是从字符串[]到字符串[]的解析器

public class PointsToDbResolver : IValueResolver<ProblemViewModel, Problem, string>
{
    public string Resolve(
        ProblemViewModel source,
        Problem destination,
        string destMember, 
        ResolutionContext context)
    {
        if (source == null)
        {
            return null;
        }

        StringBuilder result = new StringBuilder();
        for (int row = 0; row < source.Points.GetLength(0); row++)
        {
            for (int col = 0; col < source.Points[row].Length; col++)
            {
                result.Append(source.Points[row][col]).Append(Constants.PointsColSeparator);
            }
            result.Replace(
                Constants.PointsColSeparator,
                Constants.PointsRowSeparator,
                result.Length - 1, 1);
        }
        result.Remove(result.Length - 1, 1);

        return result.ToString();
    }
公共类点stodbresolver:IValueResolver
{
公共字符串解析(
问题视图模型源,
问题目的地,
字符串成员,
决议(上下文)
{
if(source==null)
{
返回null;
}
StringBuilder结果=新建StringBuilder();
for(int row=0;row
从一个字符串到另一个字符串[][]

public class PointsToViewResolver : IValueResolver<Problem, ProblemViewModel, string[][]>
{
    public string[][] Resolve(
        Problem source,
        ProblemViewModel destination,
        string[][] destMember, 
        ResolutionContext context)
    {
        if (source.Points == null)
        {
            return new string[0][];
        }

        var rows = source.Points.Split(new string[] { Constants.PointsRowSeparator },
            StringSplitOptions.None);
        string[][] result = new string[rows.Length][];
        for (int row = 0; row < rows.Length; row++)
        {
            result[row] =
                rows[row].Split(new string[] { Constants.PointsColSeparator },
                StringSplitOptions.None);
        }

        return result;
    }
}
公共类指向视图解析程序:IValueResolver
{
公共字符串[][]解析(
问题来源,,
问题视图模型目标,
字符串[][]destMember,
决议(上下文)
{
如果(source.Points==null)
{
返回新字符串[0][];
}
var rows=source.Points.Split(新字符串[]{Constants.PointsRowSeparator},
StringSplitOptions.None);
字符串[][]结果=新字符串[行.长度][];
for(int row=0;row
能否显示值解析程序的代码?以及源和目标成员(包括类型)