日期:2014-05-17  浏览次数:20733 次

无法将类型为“Common.Pack”的对象强制转换为类型“Common.Pack”。”(System.InvalidCastException)
本帖最后由 xx0xx0404 于 2013-10-30 17:13:36 编辑

    [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,
    }


以上代码输出 EXE文件就可以正常  输出 DLL 就提示以下错误。
异常:已引发:“无法将类型为“Common.Pack”的对象强制转换为类型“Common.Pack”。”(System.InvalidCastException)
引发了一个 System.InvalidCastException:“无法将类型为“Common.Pack”的对象强制转换为类型“Common.Pack”。”
Time: 2013-10-30 17:06:09
线程:<无名称>[10336]
类型

------解决方案--------------------
基本是这样运作的

引用
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)
        {
       &n