Tôi có một đối tượng lớn:
class BigObject{
public int Id {get;set;}
public string FieldA {get;set;}
// ...
public string FieldZ {get;set;}
}
và một đối tượng chuyên biệt, giống như DTO:
class SmallObject{
public int Id {get;set;}
public EnumType Type {get;set;}
public string FieldC {get;set;}
public string FieldN {get;set;}
}
Cá nhân tôi tìm thấy một khái niệm về việc chuyển BigObject thành SmallObject một cách rõ ràng - biết rằng đó là một hoạt động mất dữ liệu một chiều - rất trực quan và dễ đọc:
var small = (SmallObject) bigOne;
passSmallObjectToSomeone(small);
Nó được thực hiện bằng toán tử tường minh:
public static explicit operator SmallObject(BigObject big){
return new SmallObject{
Id = big.Id,
FieldC = big.FieldC,
FieldN = big.FieldN,
EnumType = MyEnum.BigObjectSpecific
};
}
Bây giờ, tôi có thể tạo một SmallObjectFactory
lớp với FromBigObject(BigObject big)
phương thức, điều đó sẽ làm điều tương tự, thêm nó vào phép nội xạ phụ thuộc và gọi nó khi cần ... nhưng với tôi nó dường như thậm chí còn quá phức tạp và không cần thiết.
PS Tôi không chắc điều này có liên quan hay không, nhưng OtherBigObject
cũng sẽ có thể được chuyển đổi thành SmallObject
, thiết lập khác nhau EnumType
.
.ToSmallObject()
phương thức (hoặc GetSmallObject()
). Một sai sót nhất thời của lý trí - Tôi biết có gì đó không ổn với suy nghĩ của mình, vì vậy tôi đã hỏi các bạn :)
ToSmallObject
phương pháp của @ Telastyn .