如何使用 Automapper 仅映射到带前缀的属性?
How to use Automapper to map to only properties with prefixes?
我正在尝试使用 Automapper 从 Class A 映射到 Class B。但是,我想创建一个仅在目标上有前缀字段时才映射的地图。我该怎么做?
例如,这行不通:
class TestSource
{
public long id { get; set; }
}
class TestDest
{
public long TD_id { get; set; }
public long id { get; set; }
}
private void button1_Click(object sender, EventArgs e)
{
TestSource lclTS = new TestSource() { id = 20 };
TestDest lclTD = new TestDest() { id = 30 };
var lclConfig = new MapperConfiguration
(
cfg =>
{
cfg.ClearPrefixes();
cfg.RecognizeDestinationPrefixes("TD_");
cfg.CreateMap<TestSource, TestDest>();
}
);
IMapper lclMapper = lclConfig.CreateMapper();
lclMapper.Map(lclTS, lclTD);
}
结果会是
lclTS.id = 20
lclTD.id = 20 <<<<<<< 错了,我没有映射这个,没有前缀,这个应该留30
lclTD.TD_id = 20
如果没有显式映射,自动映射器会映射具有相同名称和类型的字段。
尝试使用 ForMember 方法在字段之间创建显式映射。
我正在尝试使用 Automapper 从 Class A 映射到 Class B。但是,我想创建一个仅在目标上有前缀字段时才映射的地图。我该怎么做?
例如,这行不通:
class TestSource
{
public long id { get; set; }
}
class TestDest
{
public long TD_id { get; set; }
public long id { get; set; }
}
private void button1_Click(object sender, EventArgs e)
{
TestSource lclTS = new TestSource() { id = 20 };
TestDest lclTD = new TestDest() { id = 30 };
var lclConfig = new MapperConfiguration
(
cfg =>
{
cfg.ClearPrefixes();
cfg.RecognizeDestinationPrefixes("TD_");
cfg.CreateMap<TestSource, TestDest>();
}
);
IMapper lclMapper = lclConfig.CreateMapper();
lclMapper.Map(lclTS, lclTD);
}
结果会是
lclTS.id = 20
lclTD.id = 20 <<<<<<< 错了,我没有映射这个,没有前缀,这个应该留30
lclTD.TD_id = 20
如果没有显式映射,自动映射器会映射具有相同名称和类型的字段。
尝试使用 ForMember 方法在字段之间创建显式映射。