posts - 28,  comments - 7,  trackbacks - 0

 

 1private void button1_Click(object sender, RoutedEventArgs e)
 2        {
 3            MessageBox.Show(CreateStateRow<cinlapdemoDataSet.CustomersDataTable,cinlapdemoDataSet.CustomersRow>().RowState.ToString());
 4        }

 5
 6        public static R CreateStateRow<T, R>(params NewRowState[] newRowState)
 7            where T : DataTable
 8            where R : DataRow
 9        {
10            NewRowState nrs = NewRowState.Modified;
11
12            if (newRowState.Length > 1)
13            {
14                throw new Exception("创建行状态个数大于1");
15            }

16            else if (newRowState.Length == 1)
17            {
18                nrs = newRowState[0];
19            }

20
21            int oldRecord = 1;
22            int newRecord = 2;
23
24            if (nrs != NewRowState.Modified)
25            {
26                if (nrs == NewRowState.Added)
27                {
28                    oldRecord = -1;
29                    newRecord = 1;
30                }

31                else
32                {
33                    oldRecord = 1;
34                    newRecord = -1;
35                }

36            }

37
38            Type tableType = typeof(T);
39            Type rowType = typeof(R);
40
41            T dataTable = (T)tableType.Assembly.CreateInstance(tableType.FullName);
42
43            DataRow row = dataTable.NewRow();
44
45            FieldInfo fiOldRecord = rowType.GetField("oldRecord", BindingFlags.NonPublic | BindingFlags.Instance);
46            FieldInfo fiNewRecord = rowType.GetField("newRecord", BindingFlags.NonPublic | BindingFlags.Instance);
47
48            fiOldRecord.SetValue(row, oldRecord);
49            fiNewRecord.SetValue(row, newRecord);
50
51            return (R)row;
52        }

53
54        public enum NewRowState : int
55        {
56            Added = 0,
57            Modified = 1,
58            Deleted = 2
59        }
Tag标签: .NET,泛型
posted on 2008-04-21 20:15 think8848 阅读(45) 评论(0)  编辑 收藏 所属分类: .NET 技术

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2008-04-21 20:26 编辑过


相关链接: