如何实现C#自定义结构的强制转换

发布时间:2020-06-04编辑:脚本学堂
如何实现C#自定义结构的强制转换?

如何实现C#自定义结构的强制转换?在ASP.NET页面上定义了一个自定义结构,将该结构类型的对象存放于会话(SESSION),结果到读取SESSION的时候,强制转换回自定义结构类型失败,显示的错误也莫名其妙:当一个数字执行强制转换时 值必须是一个小于无限大的数字。

页面后台代码:
 

复制代码 代码如下:

    struct StruMyInfo
    {
        public int UserId;
        public string Name;
  }

StruMyInfo MyInfo
    {
        get
        {
            StruMyInfo myinfo;
            string sessionname = "MyInfo";
            if (Session[sessionname] != null)
            {
                myinfo = (StruMyInfo) Session[sessionname]; //失败
……
            }
            else
{
 ……
Session[sessionname] = myinfo
}
    }
}

究其原因,大概是StruMyInfo为自定义的结构,而非通用,并且定义在一个页面上。
由于网页的生存期非可持续,提交一次执行一次,造成自定义结构不可辨识。假如是WINFORM程序应该就没问题。
于是将StruMyInfo放到独立的基类里定义,就是一个独立的DLL或者位于其他地方的一个公用类,问题解决。