现在JAVA提供了一个接口,返回值是hashtable序列化的sbyte[],在C#中我怎么将他反序列化?我想知道怎么把 sbyte[] 转化为 stream, 然后将stream 反序列化,再将对象强制转换为hashtable?

解决方案 »

  1.   

    二进制序列化该只能用于平台内部,不能够跨平台使用
    异构平台通信可以使用soap,或更轻量级的xml
      

  2.   

    那我怎么处理呢,接口已经是上生产线了的,没法改了,只能用JAVA来开发了吗?
      

  3.   

    webservice??
    try
    分析java产生的xml ,
      

  4.   

    不一定啊
    二进制在通信方面具有效率的优势
    你可以在本地将数据二进制反序列化为java对象,再把该本地对象做soap序列化向.net应用程序发送
      

  5.   

    public void Deserialize(Object arg)
            {
                if (!arg.IsSerialized)
                {
                    return;
                }            arg.Result = m_SerializeProxy.Deserialize(arg.Result);
                for (int i = 0; i < arg.Args.Count; i++)
                {
                    object param = arg.Args[i];
                    arg.Args[i] = m_SerializeProxy.Deserialize(param);
                }
                arg.IsSerialized = false;
            }
      

  6.   

    sbyte?[] sbyteArr = getcbosarr.getCodSwitchByteArrayMessage("CBOS_51", "VIEW_SWITCH_CNT_SIZE");
    我调试到 sbyteArr 有数据过来了,就是不知道怎么转换了。
      

  7.   

    用java产生xml,然后对其序列化。
    如果要反序列化,我还没想到。
      

  8.   

    sbyte?[] sbyteArr = getcbosarr.getCodSwitchByteArrayMessage("CBOS_51", "VIEW_SWITCH_CNT_SIZE");
    我调试到 sbyteArr 有数据过来了,就是不知道怎么转换了。
    -----------------------------
    java code?使用.net开发
    1.将sbyte[]转为java对象
    2.将得到的java对象soap序列化
    3..net app获得soap序列化文本
    4.soap序列化文本转为.net对象
    5.运行你的业务逻辑使用java开发
    1.将sbyte[]转为java对象
    2.运行你的业务逻辑
      

  9.   

    stream IO.MemeryStream= new IO.MemeryStream(byte[]);'接收到的byte数组
    BinaryFormater format= new BinaryFormater();
    Hashtable hash=(Hashtable)format.Deserialize(ms);
      

  10.   

    Java的hashtable 序列化和C#里的不太一样的吧,最好还是按标准来用xml
      

  11.   

    stream IO.MemeryStream= new IO.MemeryStream(byte[]); 是什么意思,可以这样写吗?
      

  12.   

    IO.MemeryStream stream = new IO.MemeryStream(byte[]); 写反了
      

  13.   

    问题没有解决,应该是JAVA和C#之间确实无法这样处理,感谢大家关注。