Tôi có một lớp Phân số tùy chỉnh, mà tôi đang sử dụng trong toàn bộ dự án của mình. Nó đơn giản, nó bao gồm một hàm tạo duy nhất, chấp nhận hai int và lưu trữ chúng. Tôi muốn sử dụng DataContractSerializer để tuần tự hóa các đối tượng của tôi được sử dụng trong dự án của tôi, một số trong đó bao gồm Phân số dưới dạng các trường. Lý tưởng nhất, tôi muốn để có thể serialize đối tượng đó như thế này:Nối tiếp thành XML qua DataContract: đầu ra tùy chỉnh?
<Object>
...
<Frac>1/2</Frac> // "1/2" would get converted back into a Fraction on deserialization.
...
</Object>
Trái ngược với điều này:
<Object>
...
<Frac>
<Numerator>1</Numerator>
<Denominator>2</Denominator>
</Frac>
...
</Object>
Có cách nào để làm điều này bằng DataContracts?
Tôi muốn làm điều này vì tôi định làm cho tệp XML có thể chỉnh sửa được (tôi đang sử dụng chúng làm đầu vào cho trò chơi âm nhạc và chúng hoạt động như notecharts), và muốn giữ ký hiệu càng ngắn càng tốt cho người dùng cuối, vì vậy họ sẽ không cần phải xử lý nhiều bức tường văn bản.
EDIT: Tôi cũng cần lưu ý rằng tôi hiện có lớp Phân số là không thay đổi (tất cả các trường là readonly
), vì vậy có thể thay đổi trạng thái của Phân đoạn hiện tại. Tuy nhiên, việc trả về một đối tượng Fraction mới sẽ là OK.
Bạn có thể giải thích * tại sao * bạn muốn đầu ra ở định dạng đó? Nó có thể tạo ra câu trả lời thích hợp hơn, hoặc chỉ cho bạn theo một hướng mà bạn đã không nghĩ đến. – shaunmartin
@shaunmartin Điểm tốt, hãy đọc lại câu hỏi của tôi Tôi hơi mơ hồ. Tôi sẽ chỉnh sửa một chút. –