自动映射器,如果属性值以值开头,则计算值



我想创建一个在源和目标中使用相同的类的映射器(复制对象(,但如果"ColumnName"的属性值以"*"开头,则"Value"属性值加倍。这是类:

public class CustomerDatabaseParameter
{
    public string ColumnName { get; set; }
    public double Value { get; set; }
}

这是我需要的结果:

示例 1:

From:
ColumnName = "*xxxx";
Value = 50.0;
To:
ColumnName = "*xxxx";
Value = 100.0;

示例 2:

From:
ColumnName = "www";
Value = 50.0;
To:
ColumnName = "www";
Value = 50.0;

您可以在ResolveUsing中添加任何您喜欢的表达式。只需确保返回与目标类型匹配的类型。

CreateMap<CustomerDatabaseParameter, CustomerDatabaseParameter>()
    .ForMember(dest => dest.Value, o => o.ResolveUsing(
         src => src.ColumnName.StartsWith("*") ? (src.Value * 2) : src.Value
     ));

最新更新