gpt4 book ai didi

constructor - Automapper - 如何映射到构造函数参数而不是属性 setter

转载 作者:行者123 更新时间:2023-12-03 04:50:57 24 4
gpt4 key购买 nike

如果我的目标 setter 是私有(private)的,我可能想使用目标对象的构造函数映射到该对象。您将如何使用 Automapper 来做到这一点?

最佳答案

使用ConstructUsing

这将允许您指定在映射期间使用哪个构造函数。但随后所有其他属性将根据约定自动映射。

另请注意,这与 ConvertUsing 不同,convert using 不会继续通过约定进行映射,而是让您完全控制映射。

Mapper.CreateMap<ObjectFrom, ObjectTo>()
.ConstructUsing(x => new ObjectTo(arg0, arg1, etc));

...

using AutoMapper;
using NUnit.Framework;

namespace UnitTests
{
[TestFixture]
public class Tester
{
[Test]
public void Test_ConstructUsing()
{
Mapper.CreateMap<ObjectFrom, ObjectTo>()
.ConstructUsing(x => new ObjectTo(x.Name));

var from = new ObjectFrom { Name = "Jon", Age = 25 };

ObjectTo to = Mapper.Map<ObjectFrom, ObjectTo>(from);

Assert.That(to.Name, Is.EqualTo(from.Name));
Assert.That(to.Age, Is.EqualTo(from.Age));
}
}

public class ObjectFrom
{
public string Name { get; set; }
public int Age { get; set; }
}

public class ObjectTo
{
private readonly string _name;

public ObjectTo(string name)
{
_name = name;
}

public string Name
{
get { return _name; }
}

public int Age { get; set; }
}
}

关于constructor - Automapper - 如何映射到构造函数参数而不是属性 setter ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2239143/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com