gpt4 book ai didi

.net - "Type not expected",使用 DataContractSerializer - 但它只是一个简单的类,没有什么有趣的东西?

转载 作者:数据小太阳 更新时间:2023-10-29 01:37:07 26 4
gpt4 key购买 nike

我正在重构我的 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;
}
}

}
}

它给了我这个:

Type 'VDB_Sync.Model.Konstant' with data contract name 'Konstant:http://schemas.datacontract.org/2004/07/VDB_Sync.Model' is not expected. Consider using a DataContractResolver or add any types not known statically to the list of known types - for example, by using the KnownTypeAttribute attribute or by adding them to the list of known types passed to DataContractSerializer.

*到目前为止,我找到的帮助指向集合和类型。我的类(class)中确实有一个枚举 (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();
}

最佳答案

报告的异常是针对 VDB_Sync.Model.Konstant 的。这意味着在链的更上游某个地方,这个类被拉入另一个类,而那个类就是被序列化的那个。

问题在于,根据 Konstant 在此类中的嵌入方式(例如,如果它在集合或通用列表中),DataContractSerializer 可能无法在反序列化期间为其外观做好准备。

要解决此问题,您需要将已知类型属性应用于包含 Konstant 的类。根据您的序列化代码,我怀疑这是 VDB_SessionController

因此,尝试使用 KnownType 属性装饰此类:

[KnownType(typeof(VDB_Sync.Model.Konstant)]
public class VDB_SessionController

关于.net - "Type not expected",使用 DataContractSerializer - 但它只是一个简单的类,没有什么有趣的东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8794594/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com