我正在重构我的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;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
它给了我这个:
键入"VDB_Sync.Model.Konstant",数据合同名称为"Konstant:http://schemas.datacontract.org/2004/07/VDB_Sync.Model",不是预期的.考虑使用DataContractResolver或将任何静态未知的类型添加到已知类型列表中 - 例如,通过使用KnownTypeAttribute属性或将它们添加到传递给DataContractSerializer的已知类型列表中.
*到目前为止我找到的帮助指向了集合和类型.我的类中有一个枚举(MySqlDbType) - 但是得到这个:当我没有声明DataMembers时,我甚至得到了同样的错误:-x那么 - 这里发生了什么?我错过了什么?
作为参考,这是我如何序列化它,VDB_SessionController是根:*
public …Run Code Online (Sandbox Code Playgroud) .net xml serialization xml-serialization datacontractserializer
我有一个WCF服务.
正常操作会看到服务器正在进行一些处理,通过回调将填充的XactTaskIn对象返回给客户端.我有这个工作正常.
我的问题是,当我尝试将returnData变量设置为填充的XactException并尝试通过回调将XactTaskIn发送回客户端时,我会抛出以下异常.
异常 - 不要求"数据协定名称为'XactException:http://schemas.datacontract.org/2004/07/'的类型'XactException'.请考虑使用DataContractResolver或将已知类型静态未知的任何类型添加到已知类型列表中 - 例如,通过使用KnownTypeAttribute属性或将它们添加到传递给DataContractSerializer的已知类型列表中." (System.Runtime.Serialization.SerializationException)异常消息="类型'XactException',数据协定名称为'XactException:http://schemas.datacontract.org/2004/07/'不是预期的.考虑使用DataContractResolver或添加任何静态地知道已知类型列表的类型 - 例如,通过使用KnownTypeAttribute属性或将它们添加到传递给DataContractSerializer的已知类型列表.",Exception Type ="System.Runtime.Serialization.SerializationException"
这是XactTaskIn类
[DataContract]
public class XactTaskIn
{
[DataMember]
public DateTime timeOut;
[DataMember]
public DateTime timeIn;
[DataMember]
public string name;
[DataMember]
public string responseTo;
[DataMember]
public String moduleFromName;
[DataMember]
public String moduleFromType;
[DataMember]
public String methodFromName;
[DataMember]
public object[] originalInputs;
[DataMember]
public String returnMethodToCall;
[DataMember]
public String returnModuleToCall;
[DataMember]
public object returnData;
public XactTaskIn(DateTime timeOut, DateTime timeIn, string name, string responseTo, String moduleFromName, String moduleFromType, String methodFromName, object[] originalInputs, …Run Code Online (Sandbox Code Playgroud)