本帖最后由 xx0xx0404 于 2013-10-30 17:13:36 编辑

解决方案 »

  1.   

    是不是你两个程序集都定义了一个叫Pack的类?
      

  2.   

    调用方式是  
    Pack pack = PacketHelpers.GetBodyBytes(e.Astream);
    if (pack != null)

        case Command.VerifyVersion:
        {此处代码没写}
        break;
    }public static Pack GetBodyBytes(byte[] data)
    {
        {此处代码没写}
        return (Pack)Pack;
    }
      

  3.   

    调用方式是  
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Pack pack = PacketHelpers.GetBodyBytes(e.Astream);
    if (pack != null)

        switch ((Command)pack.PackCommand)
        {
            case Command.VerifyVersion:
            {此处代码没写}
            break;
            default:
            break;
        }
    }
     
    public static Pack GetBodyBytes(byte[] data)
    {
        {此处代码没写}
        return (Pack)Pack;
    }
     
      

  4.   

    类属性变过?可能是旧版的数据反序列化成新版的出错
      
    *****************************************************************************
    签名档: http://feiyun0112.cnblogs.com/
      

  5.   

    基本是这样运作的Pack pack = PacketHelpers.GetBodyBytes(e.Astream);
    if (pack != null)

        switch ((Command)pack.PackCommand)
        {
            case Command.VerifyVersion:
            {此处代码没写}
            break;
            default:
            break;
        }
    }
     
    public static Pack GetBodyBytes(byte[] data)
    {
        {此处代码没写}
        return (Pack)Cryption.Deserialize(Packs); //错误提示在这里   异常:已引发:“无法将类型为“Common.Pack”的对象强制转换为类型“Common.Pack”。”(System.InvalidCastException)
    引发了一个 System.InvalidCastException:“无法将类型为“Common.Pack”的对象强制转换为类型“Common.Pack”。”
    }    public static class Cryption
        {
            public static object Deserialize(byte[] stream)
            {
                object data = new object();
                MemoryStream streamMemory = new MemoryStream();
                try
                {
                    BinaryFormatter formatter = new BinaryFormatter();
                    streamMemory = new MemoryStream(stream);
                    data = formatter.Deserialize(streamMemory);
                }
                catch
                {
                    data = null;
                }
                return data;
            }
        }    [Serializable]
        public class Pack
        {
            public byte PackCommand = 0;
            public int Version = 0;
            public Pack(Command com, int ver)
            {
                PackCommand = (byte)com; //此处(byte)com的结果为 116   , com = VerifyVersion 
                Version = ver;
            }
            public Object PackObj = null;
        }    public enum Command : byte
        {
            VerifyVersion = 0x74,
        }