Đến với mạng protobuf, tuyệt vời! Tôi có một câu hỏi liên quan đến việc tuần tự hóa các danh sách trống.Danh sách rỗng của Protobuf-Net
tôi bắt đầu bằng cách tuyên bố đối tượng tôi muốn serialize:
[ProtoContract]
class TestClass
{
[ProtoMember(1)]
List<int> _listOfInts = new List<int>();
public TestClass() { }
public List<int> ListOfInts
{
get { return _listOfInts; }
set { _listOfInts = value; }
}
}
Nếu _listOfInts trống (nhưng không phải null) khi tôi deserialse đối tượng này là sẽ luôn luôn là null. Điều này làm cho cảm giác nhìn vào ước protobuf và tôi hiện đang làm việc xung quanh này bằng cách thêm các phương pháp sau đây:
[ProtoAfterDeserialization]
private void OnDeserialize()
{
if (_listOfInts == null)
_listOfInts = new List<int>();
}
Câu hỏi của tôi là liệu tôi có thể đạt được chức năng này tương tự một cách ngắn gọn hơn, có thể với một attirbute bổ sung mà sẽ khởi tạo các đối tượng rỗng/rỗng dưới dạng rỗng thay vì null?
Đây là một khả năng tôi đã không xem xét, sẽ bỏ phiếu cho bạn nếu tôi có thể. Tôi vẫn chủ yếu quan tâm để biết nếu có một thuộc tính mà sẽ làm điều này cho tôi mặc dù. – CanCan
Bạn đã thử thuộc tính [DefaultValue] chưa? Không chắc chắn nếu bạn có thể khởi tạo danh sách nhưng đáng để thử. – Jras
@ Jras Tôi đã xem xét việc thêm như vậy, nhưng mỗi khi tôi đã xem xét nó, nó quay ra để thực sự làm cho mã của người dân tồi tệ hơn, không tốt hơn –