我有一个序列化对象的应用程序。
属性在应用程序中看起来像这样。
[XmlElement(Order=5), Key(6)]
public double apple { get; set; }
在第二个应用程序中反序列化相同的对象。它在xml中反序列化,现在我正在尝试在MessagePack中实现反序列化。然而它有自定义的.cs用于反序列化对象,并且有一个自定义类,而不是类型double,它有一个CustomClass类型,它设置并返回double。
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified), Key(6)]
public CustomClass apple
{
get
{
return this.msField;
}
set
{
this.msField = value;
}
}
public class CustomClass : IXmlSerializable
{
public Timing(double apple)
{
xApple= apple;
}
public double apple
{
get
{
return xApple;
}
set
{
xApple= value;
}
}
private double xApple;
}
现在,这已经在xml中工作,我正在尝试转换为消息包。当我在CustomClass上添加[MessagePackObject(true)]标签时,我得到了
代码无效。代码:203格式:float 64
如果我没有贴上标签
“所有公共成员必须标记KeyAttribute或IgnoreMemberAttribute。 键入:... xxx ... member:apple“}
我无法将CustomeClass更改为double,因为CustomClass中还有其他东西,并且它在第二个应用程序中被大量引用。
如何解决双重> CustomClass的反序列化问题?如果这就是为什么我在这个地方收到错误的原因。
编辑 -
我尝试添加隐式运算符
public static implicit operator
Timing(double value)
{
return new Timing(value);
}
试图查看messagepack是否会接受这个,但它没有。我是否正确实现了这一点?