惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
Securelist
O
OpenAI News
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
T
Threat Research - Cisco Blogs
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Google Online Security Blog
Google Online Security Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
N
News and Events Feed by Topic
S
Security Affairs
SecWiki News
SecWiki News
Project Zero
Project Zero
L
Lohrmann on Cybersecurity
P
Proofpoint News Feed
P
Palo Alto Networks Blog
L
LINUX DO - 最新话题
H
Hacker News: Front Page
Recent Commits to openclaw:main
Recent Commits to openclaw:main
I
Intezer
Simon Willison's Weblog
Simon Willison's Weblog
W
WeLiveSecurity
T
The Exploit Database - CXSecurity.com
K
Kaspersky official blog
The GitHub Blog
The GitHub Blog
I
InfoQ
云风的 BLOG
云风的 BLOG
雷峰网
雷峰网
B
Blog
IT之家
IT之家
AWS News Blog
AWS News Blog
Jina AI
Jina AI
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Google DeepMind News
Google DeepMind News
Spread Privacy
Spread Privacy
N
News and Events Feed by Topic
Security Latest
Security Latest
美团技术团队
C
Check Point Blog
WordPress大学
WordPress大学
T
Tenable Blog
S
Security @ Cisco Blogs
Last Week in AI
Last Week in AI
博客园 - 聂微东
月光博客
月光博客
博客园 - 【当耐特】
S
Schneier on Security
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
S
Secure Thoughts
Schneier on Security
Schneier on Security
C
Cisco Blogs
Cyberwarzone
Cyberwarzone

博客园 - 戴玮

关于状态模式的思考 实在是忍受不了MSN的巨慢速度,重新换个地方 如果在网页中实现查找功能 asp.net2.0 页面生命周期方法 C#加密与解决 如何自定义一个模板列,并在后台加载 ASP.NET常用的代码集合 - 戴玮 - 博客园 触发器示例代码 ADO.NET2.0分页 - 戴玮 - 博客园 如何将枚举定义翻译成DataTable 网页中调用MSN添加好友工具 如何在XP SP2下面使用DTC Javascript 复制与粘贴 - 戴玮 - 博客园 如何在Component中取得Page对象 使用TransactionScope进行COM+事务处理 - 戴玮 - 博客园 如何在C#中使用EVAL方法 - 戴玮 - 博客园 巨NB的JAVASCRIPT代码 - 戴玮 - 博客园 9月25日C#->WebService中如何传递文件 解决了一年多的问题,狂喜(一年之前)
如何查找 Office Web 组件 (OWC) 编程文档和示例
戴玮 · 2006-11-15 · via 博客园 - 戴玮

如何序列化DataRow或者其他对象

[Serializable]
    public class Field : ISerializable
    {
        private string name = "";
        private DataRow dr = null;
        private string title = "";
        private int index = -1;

        public int Index
        {
            get { return this.index; }
            set { this.index = value; }
        }

        public string Title
        {
            get { return this.title; }
            set { this.title = value; }
        }

        public string FieldName
        {
            get { return this.name; }
            set { this.name = value; }
        }

        public DataRow FieldInfo
        {
            get { return this.dr; }
            set { this.dr = value; }
        }

        public Field()
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("name");
            this.dr = dt.NewRow();
            dt.Rows.Add(dr);
          
        }

        protected Field(SerializationInfo info, StreamingContext context)//特殊的构造函数,反序列化时自动调用
        {
            this.name = info.GetString("fieldname");
            this.title = info.GetString("fieldtitle");
            this.index = info.GetInt32("fieldindex");
            DataTable dt = info.GetValue("fieldinfo", new DataTable().GetType()) as DataTable;
            this.dr = dt.Rows[0];
        }

        [SecurityPermissionAttribute(SecurityAction.Demand, SerializationFormatter = true)]
        public virtual void GetObjectData(SerializationInfo info, StreamingContext context)//序列化时自动调用
        {
            info.AddValue("fieldname", this.name);
            info.AddValue("fieldtitle", this.title);
            info.AddValue("fieldindex", this.index);
            DataTable dt = this.dr.Table.Clone(); //datarow不能同时加入到两个DataTable中,必须先克隆一个
            DataRow row = dt.NewRow();
            row.ItemArray = dr.ItemArray;

            dt.Rows.Add(row);
            info.AddValue("fieldinfo", dt, dt.GetType());
        }

        public override string ToString()
        {
            return this.name;
        }

    }