Tengo un gran objeto:
class BigObject{
public int Id {get;set;}
public string FieldA {get;set;}
// ...
public string FieldZ {get;set;}
}
y un objeto especializado tipo DTO:
class SmallObject{
public int Id {get;set;}
public EnumType Type {get;set;}
public string FieldC {get;set;}
public string FieldN {get;set;}
}
Personalmente, encuentro un concepto de convertir explícitamente BigObject en SmallObject, sabiendo que es una operación unidireccional que pierde datos, muy intuitivo y legible:
var small = (SmallObject) bigOne;
passSmallObjectToSomeone(small);
Se implementa utilizando el operador explícito:
public static explicit operator SmallObject(BigObject big){
return new SmallObject{
Id = big.Id,
FieldC = big.FieldC,
FieldN = big.FieldN,
EnumType = MyEnum.BigObjectSpecific
};
}
Ahora, podría crear una SmallObjectFactory
clase con FromBigObject(BigObject big)
método, que haría lo mismo, agregarlo a la inyección de dependencia y llamarlo cuando sea necesario ... pero para mí parece aún más complicado e innecesario.
PD: No estoy seguro de si esto es relevante, pero habrá OtherBigObject
que también se podrá convertir en una SmallObject
configuración diferente EnumType
.
.ToSmallObject()
método (o GetSmallObject()
). Un lapso momentáneo de la razón - Yo sabía que algo está mal con mi forma de pensar, por lo que te he pedido chicos :)
ToSmallObject
método.