首先定义两个实体类:OFFICEData,UserData
OFFICEData:
[System.ComponentModel.DesignerCategory("Code")]
[SerializableAttribute]
public class OFFICEData: DataSet,ISerializable
{
public const string T_OFFICE_OFFICEID="OFFICEID";
public const string T_OFFICE_CODENO="CODENO";
public const string T_OFFICE_SPELLNO="SPELLNO";
public const string T_OFFICE_CUSTOMNO="CUSTOMNO";
public const string T_OFFICE_STROKENO="STROKENO";
public const string T_OFFICE_OFFICE="OFFICE";
public const string T_OFFICE_DISEASEAREA="DISEASEAREA";
public const string T_OFFICE_BEDAMOUNT="BEDAMOUNT";
public const string T_OFFICE_LIMITFUND="LIMITFUND";
public const string T_OFFICE_OFFICETYPE="OFFICETYPE";
public const string T_OFFICE_DEPARTMENT="DEPARTMENT";
public const string T_OFFICE_POSITION="POSITION";
private DataTable table;
private DataColumn col;
private ArrayList list;
private UserData user = new UserData();
public UserData userData
{
![]()
![]()
}

private OFFICEData(SerializationInfo info, StreamingContext context) : base(info, context)
{
userData=(UserData)info.GetValue("myData",typeof(Serialize.UserData));
}
public OFFICEData()
{
BuildDataTables();
}

public void GetObjectData(SerializationInfo info,StreamingContext text)
{
Type t = typeof(DataSet);

MethodInfo mi =t.GetMethod("System.Runtime.Serialization.ISerializable.GetObjectData",BindingFlags.Instance |BindingFlags.NonPublic );
);

info.AddValue("myData",userData);
}

//构建业务实体类的结构。
private void BuildDataTables()
{
table = new DataTable("T_OFFICE");
table.Columns.Add("OFFICEID",typeof(System.Decimal));
table.Columns.Add("CODENO",typeof(System.String));
table.Columns.Add("SPELLNO",typeof(System.String));
table.Columns.Add("CUSTOMNO",typeof(System.String));
table.Columns.Add("STROKENO",typeof(System.String));
table.Columns.Add("OFFICE",typeof(System.String));
table.Columns.Add("DISEASEAREA",typeof(System.String));
table.Columns.Add("BEDAMOUNT",typeof(System.Decimal));
table.Columns.Add("LIMITFUND",typeof(System.Decimal));
table.Columns.Add("OFFICETYPE",typeof(System.String));
table.Columns.Add("DEPARTMENT",typeof(System.String));
table.Columns.Add("POSITION",typeof(System.String));
list=new ArrayList();
col=table.Columns["OFFICEID"];
list.Add(col);
table.PrimaryKey=(DataColumn[])list.ToArray(typeof(DataColumn));
this.Tables.Add(table);
}
}
UserData:
[System.ComponentModel.DesignerCategory("Code")]
[SerializableAttribute]
public class UserData: DataSet
{
public const string T_USERS_UserID="UserID";
public const string T_USERS_CodeNo="CodeNo";
public const string T_USERS_SpellNo="SpellNo";
public const string T_USERS_CustomNo="CustomNo";
public const string T_USERS_StrokeNo="StrokeNo";
public const string T_USERS_UserName="UserName";
public const string T_USERS_Sex="Sex";
public const string T_USERS_Birthday="Birthday";
public const string T_USERS_Nation="Nation";
public const string T_USERS_Diploma="Diploma";
public const string T_USERS_Office="Office";
public const string T_USERS_LaborageNo="LaborageNo";
public const string T_USERS_Duty="Duty";
public const string T_USERS_PledgeMoney="PledgeMoney";
public const string T_USERS_WorkKind="WorkKind";
private DataTable table;
private DataColumn col;
private ArrayList list;
private UserData(SerializationInfo info, StreamingContext context) : base(info, context)
{
}
public UserData()
{
BuildDataTables();
}
//构建业务实体类的结构。
private void BuildDataTables()
{
table = new DataTable("T_USERS");
table.Columns.Add("UserID",typeof(System.Int32));
table.Columns.Add("CodeNo",typeof(System.String));
table.Columns.Add("SpellNo",typeof(System.String));
table.Columns.Add("CustomNo",typeof(System.String));
table.Columns.Add("StrokeNo",typeof(System.String));
table.Columns.Add("UserName",typeof(System.String));
table.Columns.Add("Sex",typeof(System.String));
table.Columns.Add("Birthday",typeof(System.DateTime));
table.Columns.Add("Nation",typeof(System.String));
table.Columns.Add("Diploma",typeof(System.String));
table.Columns.Add("Office",typeof(System.String));
table.Columns.Add("LaborageNo",typeof(System.String));
table.Columns.Add("Duty",typeof(System.String));
table.Columns.Add("PledgeMoney",typeof(System.Decimal));
table.Columns.Add("WorkKind",typeof(System.String));
list=new ArrayList();
col=table.Columns["UserID"];
list.Add(col);
table.PrimaryKey=(DataColumn[])list.ToArray(typeof(DataColumn));
this.Tables.Add(table);
}
}
因为DataSet实现了序列化接口ISerializable,而基类的DataSet.GetObjectData是私有的,
如果从实现了 ISerializable 的类派生出一个新的类,则只要新的类中含有任何需要序列化的变量,
就必须同时实现构造函数以及 GetObjectData 方法
DataSet实现了ISerializable,但是,他确封装了GetObjectData方法
所以在OFFICEData.GetObjectData中利用反射调用DataSet.GetObjectData方法.
相关文章:
-
2021-09-23
-
2021-11-13
-
2022-12-23
-
2018-07-25
-
2022-01-05
-
2021-12-15
-
2021-07-20
猜你喜欢
-
2021-07-12
-
2021-09-12
-
2022-12-23
-
2021-12-15
-
2022-12-23
-
2021-09-03
-
2022-01-19
相关资源
-
下载
2022-11-30
-
下载
2023-02-04
-
下载
2022-12-05