Tôi đang sắp xếp lại chuỗi tuần tự XML của mình và tôi đã tìm ra DataContractSerializer. Tất cả mọi thứ chạy rất tốt, cho đến khi nó cần phải serialize lớp này:"Loại không mong đợi", sử dụng DataContractSerializer - nhưng nó chỉ là một lớp đơn giản, không có công cụ vui nhộn?
using System;
using System.Runtime.Serialization;
namespace VDB_Sync.Model
{
[DataContract(Name="Konstant")]
public class Konstant : DataFelt
{
[DataMember]
private MySqlDbType mydataType;
[DataMember]
private object value;
public Konstant(string navn, MySqlDbType dataType, object value)
: base(navn, dataType, "*Konstant", false, false)
{
//this.navn = navn;
this.mydataType = dataType;
this.value = value;
if (navn.Contains("*Løbenummer"))
{
navn = "*Konstant: " + Convert.ToString(value);
}
}
public object Value
{
get
{
return value;
}
}
}
}
Nó cung cấp cho của tôi đây:
Loại 'VDB_Sync.Model.Konstant' bằng tên hợp đồng dữ liệu 'Konstant: http://schemas.datacontract.org/2004/07/VDB_Sync.Model 'không được mong đợi. Hãy xem xét sử dụng một DataContractResolver hoặc thêm bất kỳ loại không được biết đến tĩnh 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 bằng cách thêm chúng vào danh sách các loại đã biết được truyền cho DataContractSerializer.
* Trợ giúp tôi đã tìm thấy cho đến nay chỉ đến các bộ sưu tập và loại. Tôi có một enum (MySqlDbType) trong lớp của tôi - nhưng có được điều này: Tôi thậm chí có được cùng một lỗi khi tôi không có DataMembers tuyên bố ở tất cả: -x Vì vậy, những gì đang xảy ra ở đây? Tôi đang thiếu gì?
để tham khảo, đây là làm thế nào tôi đăng nó, VDB_SessionController là root: *
public void GemKonfig(VDB_SessionController session)
{
var settings = new XmlWriterSettings()
{
Indent = true,
IndentChars = "\t"
};
var writer = XmlWriter.Create(defaultFile, settings);
DataContractSerializer ser =
new DataContractSerializer(typeof(VDB_SessionController));
ser.WriteObject(writer, session);
writer.Close();
}
Tuyệt vời - nó hoạt động! Dường như tôi cần phải làm điều này với rất nhiều lớp học, cảm ơn! – Julian
Làm cách nào để thêm trang trí này nếu lớp được tạo bởi khung thực thể? –
Tuyệt vời! Bây giờ tôi cũng hiểu mục đích của trang trí "KnownType"! Cảm ơn! – Homer1982