今天学习了给类添加扩展方法,这里记录下。我这记性不好,过不了两天就给忘记了。
下面的例子是给控件ListView类添加三个方法:
1. AddItemInofStudent 作用是用结构体数据添加新行的数据
2。EditItemInofStudent 用结构体中的数据修改指定的行的数据
3。GetItemToStudent 获得指定行的数据,并填充到结构体中
下面就来实现这三个方法,
首先要创建一个静态类MyListView,扩展方法也要是静态的,在方法的第一个参数要写this ListView list,
表示是哪个类的扩展方法,
示例如下:
1。结构体
public struct Student { public int ID; public string Name; public string Sex; public int Age; public string Tel; }
2。添加的三个静态扩展方法
static class MyListView { public static void AddItemInofStudent(this ListView list,Student stu) { ListViewItem item = new ListViewItem(); item.Text = stu.ID.ToString(); item.SubItems.Add(stu.Name); item.SubItems.Add(stu.Sex); item.SubItems.Add(stu.Age.ToString()); item.SubItems.Add(stu.Tel); list.Items.Add(item); } static public void EditItemInofStudent(this ListView list,int nItem, Student stu) { list.Items[nItem].SubItems[0].Text = stu.ID.ToString(); list.Items[nItem].SubItems[1].Text = stu.Name; list.Items[nItem].SubItems[2].Text = stu.Sex; list.Items[nItem].SubItems[3].Text = stu.Age.ToString(); list.Items[nItem].SubItems[4].Text = stu.Tel; } static public Student GetItemToStudent(this ListView list,int nItem) { Student stu = new Student(); stu.ID = int.Parse(list.Items[nItem].SubItems[0].Text); stu.Name = list.Items[nItem].SubItems[1].Text; stu.Sex = list.Items[nItem].SubItems[2].Text; stu.Age = int.Parse(list.Items[nItem].SubItems[3].Text); stu.Tel = list.Items[nItem].SubItems[4].Text; return stu; } }
调用:就和ListView类的成员方法一样的调用就行了。
//实例结构体对像 Student stu = new Student { ID = 11, Name = "张三", Sex = "男", Age = 44, Tel = "13200789" };
//给ListView控件添加新行 listView1.AddItemInofStudent(stu); stu.ID = 13;
//修改指定行的数据 listView1.EditItemInofStudent(0,stu); //获得指定行的数据 Student stu2 = listView1.GetItemToStudent(0);
stu2.ID = 101;
listView1.AddItemInofStudent(stu2);
效果图:
总结了一下,用继承的方式的话,在程序中就要用自己继承的类来操作数据了。