using System.Collections.Generic;
using AgileObjects.AgileMapper;
public class ReferencedItem { public string Id {get;set;}}
IList<ReferencedItem> ReferencedItems{get;}
public abstract class Base: IBase {
public IList<ReferencedItem> ReferencedItems {get; private set;}
ReferencedItems = new List<ReferencedItem>();
public class DataA : Base {
public string Name {get;set;}
public DataA() : base() {}
public class DataB : Base {
public string Id {get;set;}
public DataB() : base() {}
public IList<string> ReferencedIds {get; set;}
public string Name{get;set;}
public IList<string> ReferencedIds {get; set;}
public string Id {get;set;}
public enum WrapperCase { A, B}
public WrapperCase Case {get;set;}
public DataA A {get;set;}
public DataB B {get;set;}
public static void Main()
Console.WriteLine("Hello World");
Mapper.WhenMapping.From<Source.DataA>().To<Target.Wrapper>().Map(source => source, target => target.A);
Mapper.WhenMapping.From<Source.DataB>().To<Target.Wrapper>().Map(source => source, target => target.B);
Mapper.WhenMapping.From<Source.DataA>().To<Target.DataA>().Map(source => source.ReferencedItems, target => target.ReferencedIds);
Mapper.WhenMapping.From<Source.ReferencedItem>().To<string>().Map(ctxt => ctxt.Source.Id).ToTarget();
Console.WriteLine(Mapper.GetPlanFor<Source.DataA>().ToANew<Target.Wrapper>().ToString());