CSharp · Console
using System;
using AutoMapper;
public class Program
{
public static void Main()
{
map();
Mapper.AssertConfigurationIsValid();
var card = new CreateCardVm()
{
Audit = new AuditVm(){ TransId = 1, UserId = "A22", Shift = 3 },
To = "You",
From = "Me"
};
var cmd = Mapper.Map<CreateCardVm, SetNewCardSettings>(card);
cmd.From.Dump();
cmd.To.Dump();
cmd.TransId.Dump();
cmd.UserId.Dump();
cmd.Shift.Dump();
}
static void map()
{
Mapper.CreateMap<AuditVm, CardBase>()
.Include<AuditVm, SetNewCardSettings>();
Mapper.CreateMap<AuditVm, SetNewCardSettings>()
.ForMember(dest => dest.To, opt => opt.Ignore())
.ForMember(dest => dest.From, opt => opt.Ignore());
Mapper.CreateMap<CreateCardVm, SetNewCardSettings>()
.ConvertUsing(src => Mapper.Map<SetNewCardSettings>(src.Audit));
// or
//.ConvertUsing(src => Mapper.Map<AuditVm, SetNewCardSettings>(src.Audit));
}
}
//// VIEW MODELS IN WEB PROJECT
// this class in in a different Area of the application than CardVm
public class CreateCardVm : CardVm
{
public AuditVm Audit { get; set; }
}
public class AuditVm
{
public int TransId {get; set; }
public string UserId { get; set; }
public int Shift { get; set; }
}
public class CardVm
{
public string To { get; set; }
public string From { get; set; }
public string Subject { get; set; }
}
//// COMMANDS (DTOs) IN DOMAIN PROJECT
public class CardBase
{
public int TransId {get; set; }
public string UserId { get; set; }
public int Shift { get; set; }
}
// one of the concrete classes
public class SetNewCardSettings : CardBase
{
public string To { get; set; }
public string From { get; set; }
}