Skip to content

Instantly share code, notes, and snippets.

@cyberzed
Created July 16, 2012 22:26
Show Gist options
  • Select an option

  • Save cyberzed/3125486 to your computer and use it in GitHub Desktop.

Select an option

Save cyberzed/3125486 to your computer and use it in GitHub Desktop.
public class ICC
{
public ICC(string number)
{
Number = number;
}
public string Number { get; private set; }
}
public class ICCConvertionPattern : IConversionPattern<ICC, string>
{
public Expression<Func<ICC, IMapper, MappingContext, string>> BuildConversionExpression(MappingStep mapping)
{
return (icc, mapper, context) => icc != null ? icc.Number : string.Empty;
}
}
public class PIN
{
public PIN(string code)
{
Code = code;
}
public string Code { get; set; }
}
public class PINConvertionPattern : IConversionPattern<PIN, string>
{
public Expression<Func<PIN, IMapper, MappingContext, string>> BuildConversionExpression(MappingStep mapping)
{
return (pin, mapper, context) => pin != null ? pin.Code : string.Empty;
}
}
internal class Program
{
private static void Main()
{
var mapBuilder = new MapperBuilder();
mapBuilder.Settings.AddConversionPatternType(typeof (ICCConvertionPattern));
mapBuilder.Settings.AddConversionPatternType(typeof (PINConvertionPattern));
var mapper = mapBuilder.BuildMapper();
var sim = new SIM
{
ICC = new ICC("12345678901234567890"),
PIN1 = new PIN("1234"),
PIN2 = new PIN("5678")
};
var simDto = mapper.Convert<SIMDto>(sim);
}
}
public class SIM
{
public ICC ICC { get; set; }
public PIN PIN1 { get; set; }
public PIN PIN2 { get; set; }
}
public class SIMDto
{
public string ICC { get; set; }
public string PIN1 { get; set; }
public string PIN2 { get; set; }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment