你可以自己实现一个简单的序列化方法,将一个对象转换成Byte[]。以下是一个简单的例子。
如果要实现自己的序列化方法,我的想法是这个序列化以及反序列化的操作相当平凡,且这些要序列化的对象是比较相似的。我给出的例子就是一个简单的IM系统中消息的基类。public class BaseMessage
    {
        #region Fields
        private readonly MessageType m_MsgType; // a value indicate the type of current message.        private String[] m_ParaString;
        private Int32[] m_ParaInt;
        private Boolean[] m_ParaBool;
        private Byte[][] m_ParaBytes;
        private Boolean m_IsChanged;
        private Byte[] m_DataBytes; // reference the bytes which contain serialized data of current message.
        #endregion        private void SerializeData()
        {
            Encoding StrEncoder = null;
            Int32 DataBuffLen = 0;
            Int32 DataBuffOffset = 0;
            Byte[] TempParaBytes = null;
            List<Byte[]> ParaBytesList = null;            StrEncoder = Encoding.UTF8;
            DataBuffLen = 1; // set 1 to DataBuffLen is for length of MessageType
            ParaBytesList = new List<Byte[]>();            for (Int32 i = 0; i < m_ParaString.Length; i++)
            {
                TempParaBytes = StrEncoder.GetBytes(m_ParaString[i]);
                ParaBytesList.Add(BitConverter.GetBytes((UInt16)TempParaBytes.Length));
                ParaBytesList.Add(TempParaBytes);
                DataBuffLen += 2 + TempParaBytes.Length;
            }            DataBuffLen += m_ParaInt.Length * 4;
            for (Int32 i = 0; i < m_ParaInt.Length; i++)
                ParaBytesList.Add(BitConverter.GetBytes(m_ParaInt[i]));            DataBuffLen += m_ParaBool.Length * 1;
            for (Int32 i = 0; i < m_ParaBool.Length; i++)
                ParaBytesList.Add(BitConverter.GetBytes(m_ParaBool[i]));            for (Int32 i = 0; i < m_ParaBytes.Length; i++)
            {
                TempParaBytes = m_ParaBytes[i];
                ParaBytesList.Add(BitConverter.GetBytes((UInt16)TempParaBytes.Length));
                ParaBytesList.Add(TempParaBytes);
                DataBuffLen += 2 + TempParaBytes.Length;
            }            m_DataBytes = new Byte[DataBuffLen];
            m_DataBytes[0] = (Byte)m_MsgType;
            DataBuffOffset = 1;
            for (Int32 i = 0; i < ParaBytesList.Count; i++)
            {
                TempParaBytes = ParaBytesList[i];
                Array.Copy(TempParaBytes, 0, m_DataBytes, DataBuffOffset, TempParaBytes.Length);
                DataBuffOffset += TempParaBytes.Length;
            }            m_IsChanged = false;
        }        private void DeserializeData()
        {
            Encoding StrEncoder = null;
            Int32 DataBuffOffset = 0;
            Int32 ParaLength = 0;            StrEncoder = Encoding.UTF8;
            DataBuffOffset = 1;            for (Int32 i = 0; i < m_ParaString.Length; i++)
            {
                ParaLength = BitConverter.ToUInt16(m_DataBytes, DataBuffOffset);
                DataBuffOffset += 2;
                m_ParaString[i] = StrEncoder.GetString(m_DataBytes, DataBuffOffset, ParaLength);
                DataBuffOffset += ParaLength;
            }            for (Int32 i = 0; i < m_ParaInt.Length; i++)
            {
                m_ParaInt[i] = BitConverter.ToInt32(m_DataBytes, DataBuffOffset);
                DataBuffOffset += 4;
            }            for (Int32 i = 0; i < m_ParaBool.Length; i++)
            {
                m_ParaBool[i] = BitConverter.ToBoolean(m_DataBytes, DataBuffOffset);
                DataBuffOffset += 1;
            }            for (Int32 i = 0; i < m_ParaBytes.Length; i++)
            {
                ParaLength = BitConverter.ToUInt16(m_DataBytes, DataBuffOffset);
                DataBuffOffset += 2;
                m_ParaBytes[i] = new Byte[ParaLength];
                Array.Copy(m_DataBytes, DataBuffOffset, m_ParaBytes[i], 0, ParaLength);
                DataBuffOffset += ParaLength;
            }            m_IsChanged = false;
        }
    }

解决方案 »

  1.   

    楼上的都是简单数据.
    如果要传递一个class对象的话,就没那么简单了哦.只能用内存来序列化
      

  2.   

    remoting好像可以做到,wcf好像也行,你看看去
      

  3.   

    二进制序列化...不支持异种系统...
    XML序列化...SOAP序列化...交换标准...看MSDN去...
      

  4.   

    使用Remoting,其内部还是使用.Net里的序列化方式(Binary或SOAP)的。
    关于WCF就不是很清楚了。
      

  5.   

    .net Remoting 
    序列化再反序列化就对了啊