Nuestros mejores programadores agotaron sus reservas de café, en su búsqueda noche y día por la resolución, hasta que Mateo encontró el resultado en GitHub así que hoy la comparte contigo.
Solución:
Terminé haciendo algo como esto:
Mapper.CreateMap().ConvertUsing();
Mapper.CreateMap().ConvertUsing();
Mapper.CreateMap().ConvertUsing();
Mapper.CreateMap().ConvertUsing();
Mapper.CreateMap().ConvertUsing();
Mapper.CreateMap().ConvertUsing();
Mapper.CreateMap().ConvertUsing();
Mapper.CreateMap().ConvertUsing();
Mapper.CreateMap().ConvertUsing();
Mapper.CreateMap().ConvertUsing();
Mapper.CreateMap();
Mapper.Map(mySourceObject, myDestinationObject);
Y las clases a las que hace referencia (primer borrador):
// TODO: Boil down to two with Generics if possible
#region AutoMapTypeConverters
// Automap type converter definitions for
// int, int?, decimal, decimal?, bool, bool?, Int64, Int64?, DateTime
// Automapper string to int?
private class NullIntTypeConverter : TypeConverter
protected override int? ConvertCore(string source)
if (source == null)
return null;
else
int result;
return Int32.TryParse(source, out result) ? (int?) result : null;
// Automapper string to int
private class IntTypeConverter : TypeConverter
protected override int ConvertCore(string source)
if (source == null)
throw new MappingException("null string value cannot convert to non-nullable return type.");
else
return Int32.Parse(source);
// Automapper string to decimal?
private class NullDecimalTypeConverter : TypeConverter
protected override decimal? ConvertCore(string source)
if (source == null)
return null;
else
decimal result;
return Decimal.TryParse(source, out result) ? (decimal?) result : null;
// Automapper string to decimal
private class DecimalTypeConverter : TypeConverter
protected override decimal ConvertCore(string source)
if (source == null)
throw new MappingException("null string value cannot convert to non-nullable return type.");
else
return Decimal.Parse(source);
// Automapper string to bool?
private class NullBooleanTypeConverter : TypeConverter
protected override bool? ConvertCore(string source)
if (source == null)
return null;
else
bool result;
return Boolean.TryParse(source, out result) ? (bool?) result : null;
// Automapper string to bool
private class BooleanTypeConverter : TypeConverter
protected override bool ConvertCore(string source)
if (source == null)
throw new MappingException("null string value cannot convert to non-nullable return type.");
else
return Boolean.Parse(source);
// Automapper string to Int64?
private class NullInt64TypeConverter : TypeConverter
protected override Int64? ConvertCore(string source)
if (source == null)
return null;
else
Int64 result;
return Int64.TryParse(source, out result) ? (Int64?)result : null;
// Automapper string to Int64
private class Int64TypeConverter : TypeConverter
protected override Int64 ConvertCore(string source)
if (source == null)
throw new MappingException("null string value cannot convert to non-nullable return type.");
else
return Int64.Parse(source);
// Automapper string to DateTime?
// In our case, the datetime will be a JSON2.org datetime
// Example: "/Date(1288296203190)/"
private class NullDateTimeTypeConverter : TypeConverter
protected override DateTime? ConvertCore(string source)
if (source == null)
return null;
else
DateTime result;
return DateTime.TryParse(source, out result) ? (DateTime?) result : null;
// Automapper string to DateTime
private class DateTimeTypeConverter : TypeConverter
protected override DateTime ConvertCore(string source)
if (source == null)
throw new MappingException("null string value cannot convert to non-nullable return type.");
else
return DateTime.Parse(source);
#endregion
Podría crear propiedades en su clase de origen que conviertan campos a los tipos tal como existen en el destino. Luego use AutoMapper de una manera simple y sencilla.
public class source
public int _myfield;
public string MyField
get
return _myfield.ToString();
public class destination
public string MyField get; set;
Solo para mantenerme actualizado.
Las versiones más nuevas pueden hacer algunas conversiones simples automáticamente
public class Source
public string String get; set;
public class Target
public int Int get; set;
public decimal Decimal get; set;
[Fact]
public void TestCustomMap()
Mapper.Initialize(cfg =>
cfg.CreateMap
Si haces scroll puedes encontrar las crónicas de otros sys admins, tú de igual manera puedes dejar el tuyo si dominas el tema.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)