Büyük bir nesnem var:
class BigObject{
public int Id {get;set;}
public string FieldA {get;set;}
// ...
public string FieldZ {get;set;}
}
ve özel, DTO benzeri bir nesne:
class SmallObject{
public int Id {get;set;}
public EnumType Type {get;set;}
public string FieldC {get;set;}
public string FieldN {get;set;}
}
Kişisel olarak açıkça BigObject'i SmallObject'e dökerek bir kavram buluyorum - bunun tek yönlü, veri kaybeden bir işlem olduğunu bilerek - çok sezgisel ve okunabilir:
var small = (SmallObject) bigOne;
passSmallObjectToSomeone(small);
Açık operatör kullanılarak uygulanır:
public static explicit operator SmallObject(BigObject big){
return new SmallObject{
Id = big.Id,
FieldC = big.FieldC,
FieldN = big.FieldN,
EnumType = MyEnum.BigObjectSpecific
};
}
Şimdi, bir yaratabilecek SmallObjectFactory
ile sınıf FromBigObject(BigObject big)
, aynı şeyi bağımlılık enjeksiyon eklemek ve gerektiğinde çağırır yöntemi ... ama bana daha da fazla karmaşık ve gereksiz görünüyor.
PS Bunun konuyla alakalı olup olmadığından emin değilim, ancak bunun OtherBigObject
da SmallObject
farklı bir hale getirilerek dönüştürülebileceği de olacaktır EnumType
.
.ToSmallObject()
yöntem (veya GetSmallObject()
). Anlık bir akıl yürütme sebebi
ToSmallObject
yöntem fikri ile birleştirildiğinde .