Ich habe ein großes Objekt:
class BigObject{
public int Id {get;set;}
public string FieldA {get;set;}
// ...
public string FieldZ {get;set;}
}
und ein spezialisiertes, DTO-ähnliches Objekt:
class SmallObject{
public int Id {get;set;}
public EnumType Type {get;set;}
public string FieldC {get;set;}
public string FieldN {get;set;}
}
Ich persönlich finde ein Konzept zum expliziten Umwandeln von BigObject in SmallObject - in dem Wissen, dass es sich um eine Einwegoperation handelt, bei der Daten verloren gehen - sehr intuitiv und lesbar:
var small = (SmallObject) bigOne;
passSmallObjectToSomeone(small);
Es wird mit dem expliziten Operator implementiert:
public static explicit operator SmallObject(BigObject big){
return new SmallObject{
Id = big.Id,
FieldC = big.FieldC,
FieldN = big.FieldN,
EnumType = MyEnum.BigObjectSpecific
};
}
Jetzt könnte ich eine SmallObjectFactoryKlasse mit einer FromBigObject(BigObject big)Methode erstellen , die dasselbe macht, sie zur Abhängigkeitsinjektion hinzufügt und sie bei Bedarf aufruft ... aber für mich scheint es noch komplizierter und unnötiger zu sein.
PS: Ich bin mir nicht sicher, ob dies relevant ist, aber es wird möglich sein OtherBigObject, das auch in eine SmallObjectandere Einstellung umzuwandeln EnumType.
.ToSmallObject()Methode (oder GetSmallObject()). Ein kurzer Moment der Vernunft - Ich wusste, dass etwas mit meinem Denken nicht stimmt, also habe ich euch gefragt :)
ToSmallObjectMethode.