C#给类的添加扩展方法

今天学习了给类添加扩展方法,这里记录下。我这记性不好,过不了两天就给忘记了。

下面的例子是给控件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);

效果图:

总结了一下,用继承的方式的话,在程序中就要用自己继承的类来操作数据了。

签名:GreenLeaf1976
原文地址:https://www.cnblogs.com/greenleaf1976/p/14961549.html