Ok vì vậy tôi đã nhận DataContractSerializer làm việc với biểu đồ đối tượng của mình. Xem các câu hỏi trước của tôi để biết thêm thông tin.RuntimeType: http: //schemas.datacontract.org/2004/07/System 'không được mong đợi
Serialization/Derialization of a tree structure
The deserializer has no knowlege of any type that maps to this contract
Tuy nhiên, một trong những lĩnh vực của tôi, _UserPropertyDefinitions, được định nghĩa như hình dưới đây .. Nó định nghĩa một danh sách các thuộc tính tùy chỉnh mà người dùng này có thể thêm vào các đối tượng trong cấu trúc dữ liệu . Chuỗi là một khóa duy nhất để xác định thuộc tính và Loại là loại thuộc tính luôn là loại nguyên thủy như Bool, Int, String, v.v.
Mỗi đối tượng có một từ tương ứng Dictionary (Chuỗi khóa, giá trị đối tượng) bộ sưu tập để lưu trữ các giá trị nó đã đặt ra cho bất kỳ "Properties tài"
[DataMember]
private Dictionary<string, Type> _UserPropertyDefinitions;
đồ thị đối tượng của tôi serializes tốt khi khách sạn này là một bộ sưu tập sản phẩm nào, nhưng khi tôi thêm một tài sản tùy chỉnh bộ sưu tập này Tôi nhận được ngoại lệ sau khi cố gắng serialize với DataContractSerializer.
Loại 'System.RuntimeType' với dữ liệu hợp đồng tên 'RuntimeType: http://schemas.datacontract.org/2004/07/System' không được mong đợi. Thêm bất kỳ loại nào không phải là được biết đến tĩnh vào danh sách các loại đã biết - ví dụ: bằng cách sử dụng thuộc tính KnownTypeAttribute hoặc thêm chúng vào danh sách các loại đã biết được chuyển đến DataContractSerializer.
Nếu tôi xóa thuộc tính DataMember cho trường này, tôi có thể tuần tự hóa/deserialize với ngoại lệ, nhưng tất nhiên tôi mất cài đặt tôi đã tạo trong trường này.
Xin lỗi vì trả lời chậm ;-p Hoặc Type.GetType() hoặc Assembly.GetType() –