我有两种类型.一个是实体,一个是模型.实体有一个名为Items的属性,它是一个字符串.模型有一个属性,也称为Items,但它是字符串的List<string>.

我正在使用AutoMapper来映射这个—像这样:

CreateMap<Model, Entity>()
    .ForMember(dest => dest.Items,
               opt => opt.ConvertUsing<List<string>>(new ListToStringValueConverter()));

以下是我的ListToStringValueConverter:

public class ListToStringValueConverter : IValueConverter<List<string>, string>
{
    public string Convert(List<string> source, ResolutionContext context)
    {
        if (source != null)
            return string.Join(",", source);

        return string.Empty;
    }
}

然而,当对模型中的实体进行映射时,

entity = _mapper.Map<Entity>(model);

我得到entity.Items的值,

System.Collections.Generic.List`1[System.String]

Why is my converter not converting the ["1","2"] to "1,2" but to
System.Collections.Generic.List1[System.String]`?

我错过了什么或做错了什么?

推荐答案

给定样本类

class Model
{
    public List<string> Items { get; set; }
}

class Entity
{
    public string Items { get; set; }
}

Project使用MapFrom()方法的成员:

var list = new List<string> { "1", "2" };
Model model = new Model { Items = list };

var configuration = new MapperConfiguration(cfg => cfg.CreateMap<Model, Entity>()
   .ForMember(dest => dest.Items, opt => opt.MapFrom(src => string.Join(',', src.Items))));

Mapper mapper = new Mapper(configuration);
Entity entity = mapper.Map<Model, Entity>(model);

Console.WriteLine("Items: " + entity.Items); // "1,2"

Csharp相关问答推荐

如何使用C#中的图形API更新用户配置文件图像

Entity Framework Core 8 dbcontext—无法以多对多关系添加某些行'

需要澄清C#的Clean Architecture解决方案模板的AuditableEntityInterceptor类

在具有主构造函数的类中初始化属性时出现警告

在静态模式下实例化配置

使用Dapper映射联接查询对象数据到使用SplitOn;

如何在Cosmos SDK中控制超时、重试和重试之间的延迟?

如何在用户在线时限制令牌生成?

有条件地定义预处理器指令常量

C#LINQ延迟执行和嵌套方法

如何使用.NET Aspire从Blazor应用程序与GRPC API通信?

VS代码扩展无法在新版本扩展C#中运行从v2.10.28开始

Xamarin.Forms-如何创建可 Select 的显示alert 或弹出窗口?

如何正确地在VB中初始化类?

从MudAutoComplete打开对话框,列表仍然可见

如何在.NET MAUI上在iOS和Mac之间共享代码?(no条件编译和无代码重复)

在使用xUnit和Mock执行单元测试时,控制器ViewResult返回空的Model集合

如何处理ASP.NET Core中包含两个构造函数的控制器?

测试单个对象是否与Func<;T,bool>;匹配

如何在flutter dart中使用publicKey.xml文件进行rsa加密,我遇到了问题Exception:Could not parse BigInt