N.K
N.K

Reputation: 2240

AutoMapper Custom Mappings

Lets assume I have the following classes

public class foo
{
    public string Value;
}


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

Now I want to configure Auto Map, to Map Value1 to Value if Value1 starts with "A", but otherwise I want to map Value2 to Value.

This is what I have so far:

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***>>
            })

However I know how can I give value 1 or value 2 on Conditional basis but don't know how to put some custom code , call a function or throw an Exception

Please Guide.

Upvotes: 10

Views: 14441

Answers (1)

D Stanley
D Stanley

Reputation: 152624

You can pass a lambda to ResolveUsing:

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

Upvotes: 21

Related Questions