MessagePack - 在另一个应用程序中反序列化对象 - 第二个应用程序具有自定义类而不是类型double

时间:2018-06-07 14:15:07

标签: c# msgpack

我有一个序列化对象的应用程序。

属性在应用程序中看起来像这样。

[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是否会接受这个,但它没有。我是否正确实现了这一点?

0 个答案:

没有答案
相关问题