c# - AutoMapper 自定义映射

标签 c#

假设我有以下类(class)

public class foo
{
    public string Value;
}


public class bar
{
    public string Value1;
    public string Value2;
}

现在我想配置自动映射,如果 Value1 以“A”开头,则将 Value1 映射到 Value,否则我想将 Value2 映射到 Value。

这是我目前所拥有的:

Mapper
    .CreateMap<foo,bar>()
    .ForMember(t => t.Value, 
        o => 
            {
                o.Condition(s => 
                    s.Value1.StartsWith("A"));
                o.MapFrom(s => s.Value1);
                  <<***I want to throw Exception here***>>
            })

但是我知道如何在有条件的基础上给出值 1 或值 2,但不知道如何放置一些自定义代码、调用函数或抛出异常

请指导。

最佳答案

您可以将 lambda 传递给 ResolveUsing:

.ForMember(f => f.Value, o => o.ResolveUsing(b =>
    {
        if (b.Value1.StartsWith("A"))
        {
            return b.Value1;
        }
        return b.Value2;
    }
));

关于c# - AutoMapper 自定义映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20196367/

相关文章:

c# - 在 C# 中使用 Volatile.Write() 而不是 volatile

c# - 如何关闭 C# ListView 中的行选择——特别是虚线轮廓!

c# - 当音频频谱达到特定高度时如何捕捉事件,例如由响亮的声音触发的事件?

c# - 如何使用秒表测量 while 循环迭代平均值

c# - 将 JSON (jQuery) 映射到 KeyValuePair

c# - 抽象类必须覆盖抽象方法?

c# - Bloomberg API - 获取政府债券列表

c# - 如何删除List C#中的一项?

c# - EF 上下文在 docker 中没有响应

c# - WPF INotifyPropertyChanged 是如何工作的?