Eu tenho um grande objeto:
class BigObject{
public int Id {get;set;}
public string FieldA {get;set;}
// ...
public string FieldZ {get;set;}
}
e um objeto especializado, semelhante ao DTO:
class SmallObject{
public int Id {get;set;}
public EnumType Type {get;set;}
public string FieldC {get;set;}
public string FieldN {get;set;}
}
Pessoalmente, acho um conceito de conversão explícita do BigObject no SmallObject - sabendo que é uma operação unidirecional e com perda de dados - muito intuitiva e legível:
var small = (SmallObject) bigOne;
passSmallObjectToSomeone(small);
É implementado usando o 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
};
}
Agora, eu poderia criar uma SmallObjectFactory
classe com o FromBigObject(BigObject big)
método, que faria a mesma coisa, adicioná-la à injeção de dependência e chamá-la quando necessário ... mas para mim parece ainda mais complicado e desnecessário.
PS Não tenho certeza se isso é relevante, mas haverá OtherBigObject
que também poderá ser convertido em SmallObject
configurações diferentes EnumType
.
.ToSmallObject()
método (ou GetSmallObject()
). Um lapso momentâneo da razão - eu sabia que algo está errado com o meu pensamento, então eu pedi a vocês :)
ToSmallObject
método de @ Telastyn .