"Type not expected", using DataContractSerializer - но это всего лишь простой класс, никаких приколов?

Я рефакторю свою XML-сериализацию и решил попробовать DataContractSerializer. Все работает гладко, пока не нужно сериализовать этот класс:

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;
        }
    }

}
}

Он выдает мне следующее:

Тип 'VDB_Sync.Model.Konstant' с именем контракта данных 'Konstant:http://schemas.datacontract.org/2004/07/VDB_Sync.Model' не ожидается. Рассмотрите возможность использования DataContractResolver или добавьте любые типы, не известные статически, в список известных типов - например, с помощью атрибута KnownTypeAttribute или добавив их в список известных типов, переданных DataContractSerializer.

* Помощь, которую я нашел до сих пор, указывает на коллекции и типы. У меня есть перечисление (MySqlDbType) в моем классе - но я получаю это: Я даже получаю ту же ошибку, когда у меня вообще нет объявленных DataMembers :-x Так что же здесь происходит? Что я упускаю?

Для справки, вот как я сериализовал это, VDB_SessionController является корнем:*

    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();
    }
58
задан Julian 9 January 2012 в 20:15
поделиться