尝试使用protobuf-net序列化System.Numerics.Quaternion 背景信息问题问题

问题描述

背景信息

我有一个.Net Standard 2.0类库,该库使用Protobuf-net.grpc的代码优先方法来定义gRPC服务。在这个定义中,我有一些类定义了不同的数据结构,我们将使用这些结构来记录传感器数据并使用protobuf-net将其序列化。我的程序正在摄取数十万个大型对象/秒(很快将扩展到数百万个),并且打算在嵌入式环境中使用。

问题

在下面的课堂上,我希望将System.Numerics.Quaterion作为成员包括在内。我似乎无法将此序列化。使用静态构造函数,由于在执行静态构造函数时已经以某种方式创建了Quaternion模型,因此RuntimeTypeModel引发了异常。因为这是一个类库,所以我非常希望避免使用gRPC服务在每个不同的程序中调用RuntimeTypeModel。我希望找到一种方法来序列化System.Numerics.Quaternion。

我尝试将这个静态构造函数运行时定义放在类层次结构的最高级别上毫无用处。仍然抛出异常。

[ProtoContract]
    public class IMUData : SensorData,ISensorData
    {
        static IMUData()
        {
            RuntimeTypeModel.Default.Add(typeof(Quaternion),false)
                .Add("W")
                .Add("X")
                .Add("Y")
                .Add("Z");
        }

        ... //Other members

        [ProtoMember(8)]
        public Quaternion Orientation
        {
            get; set;
        }

        ... //Other methods and members
    }

问题

我甚至想做些什么,还是应该简单地创建自己的Quaternion类并定义隐式运算符? (我宁愿避免这种情况,因为处理数十亿个对象需要足够长的时间)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)