当前位置:编程学习 > C#/ASP.NET >>

解析一个带继承关系的类

项目需要解析一个类A,这个类A已经打包成byte数组过来了。类的结构大概是这样
A:B
{
  字段1;
  字段2;
}

B
{
  字段3;
  字段4;
}

解析方法是
byte[] Abytes = _toBytes.ToByte(mqMsg.gpsBody);
A  mqGPS = (A)_fromBytes.fromByte(Abytes , 0, typeof(A));

如果我本地的A不继承B,那么解析可以成功,但是取不到B的内容。
如果我本地A继承B,解析会报错。

我用javaobject解析(因为这个包是java传过来的),发现里面的结构是
{
["字段1","1的值"],
["字段2","2的值"],
["*字段3","3的值"],
["*字段4","4的值"]
}

父类的字段里面多了一个星号。但是如果将B的字段命名成*字段3,这就成指针了肯定不行。



请问有什么办法可以解析成类?(不要用javaobject一个字段一个字段扣的方法) 类 继承 --------------------编程问答-------------------- byte[] Abytes = _toBytes.ToByte(mqMsg.gpsBody); // 个人感觉这里应该是一个二维数组
A  mqGPS = (A)_fromBytes.fromByte(Abytes , 0, typeof(A));// 估计这个地方应该是循环写入

值类型和引用类型,这样直接转换?

--------------------编程问答--------------------
引用 1 楼 yeness 的回复:
byte[] Abytes = _toBytes.ToByte(mqMsg.gpsBody); // 个人感觉这里应该是一个二维数组
A  mqGPS = (A)_fromBytes.fromByte(Abytes , 0, typeof(A));// 估计这个地方应该是循环写入

值类型和引用类型,这样直接转换?


是一个一维数组,设断点看过。这个fromBytes是JavaCSConverter里面的FromByteConvertHelper类里面有个fromByte可以直接转换成javaobject --------------------编程问答--------------------
引用 2 楼 izumilen 的回复:
我用javaobject解析(因为这个包是java传过来的),发现里面的结构是
{
["字段1","1的值"],
["字段2","2的值"],
["*字段3","3的值"],
["*字段4","4的值"]
}



我想请问这是几维? --------------------编程问答-------------------- 我嘞个去,阿杜跟
--------------------编程问答--------------------
引用 3 楼 yeness 的回复:
引用 2 楼 izumilen 的回复:我用javaobject解析(因为这个包是java传过来的),发现里面的结构是
{
["字段1","1的值"],
["字段2","2的值"],
["*字段3","3的值"],
["*字段4","4的值"]
}


我想请问这是几维?


解析成javaobject之后,javaobject会把它根据原来传过来的自定义类型字段名称和值保存。

namespace JavaCSConverter.javaobject
{
    public class JavaObject : ClassDescriberFactory
    {
        public JavaObject(string javaClassName);
        public JavaObject(string javaClassName, string productName);

        public string JavaClassName { get; }
        public string ProductName { get; set; }

        public object this[string s] { get; set; }

        public ClassDescriber getClassDescriber();
    }
}

这是javaobject的定义,准换好了是public JavaObject(string javaClassName, string productName);这样显示的。

但是这个传过来的byte数组绝绝对对是一维数组。不是说必须二维数组才能转化出二维来…………
--------------------编程问答-------------------- 没人答我……还好我们老大给解决了,分给我自己好了,方法要点在下面。

格式依然是
A:B
{
  字段1;
  字段2;
}

但是A和B中可能为null的字段特别是int和byte要定义为可为空就是int?,byte?

解析的时候不要解析子类,解析父类B 就可以都取到了。
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,