服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C# - C#快速实现IList非泛型类接口的自定义类作为数据源

C#快速实现IList非泛型类接口的自定义类作为数据源

2023-03-09 14:52河西石头 C#

本文主要介绍了C#快速实现IList非泛型类接口的自定义类作为数据源,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

使用可以绑定数据源的控件我们需要有实现了IList接口的类作为数据源,我们有很多的方法,比如使用ArrayList或者List的泛型类都是很方便的,或者不怕麻烦的索性直接上DataTable。
但我们也许想实现一个专用于某个自己定义的对象的list类,这样其他类想错误的加入这个list都不可能了。

一、利用VS的修补程序快速继承IList

假定我有一个Creature的类,如果我们直接在上面加上接口的继承,则会出现报错提示,如下图:

C#快速实现IList非泛型类接口的自定义类作为数据源

说明,这些接口成员都是必须实现的。
我们来一一实现,其实也不必要,因为我们只是借用它的接口让Creature类成为一个可以充当数据源DataSource的类。

我们点击最下面的显示可能的修补程序(Alt+Enter即可),然后点预览,可以根据自己的需要修改。

C#快速实现IList非泛型类接口的自定义类作为数据源

如果不需要特别的修改,基本直接应用即可,只是不能应用到数据源绑定上。表面上看这样这个类就实现了IList接口了,但要用于数据源绑定就必须实现我所列出的5个成员,否则还是不能做为数据源给控件使用。

二、实现必须的成员

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#region 做数据绑定必须实现的成员
 
     /// <summary>
     /// 添加元素必须的方法
     /// </summary>
     /// <param name="value"></param>
     /// <returns></returns>
     /// <exception cref="NotImplementedException"></exception>
     public int Add(object? value)
     {
         list.Add(value);
         return list.Count;
         //throw new NotImplementedException();
     }
     public int Count { get { return list.Count; } }
     public object? this[int index] {
         get { return list[index]; }
         set  { list[index] = value; }
          }
     /// <summary>
     /// 如果要作为DataGridView的数据源,必须实现这个属性
     /// </summary>
     public bool IsReadOnly { get { return false;}
     }
     /// <summary>
     /// 迭代必须的方法
     /// </summary>
     /// <returns></returns>
     /// <exception cref="NotImplementedException"></exception>
     public IEnumerator GetEnumerator()
     {
         return list.GetEnumerator();
         //throw new NotImplementedException();
     }
     #endregion

我们来看看效果:

C#快速实现IList非泛型类接口的自定义类作为数据源

这里我们测试了三种绑定数据源的控件,分别是ListBox,ComboBox,DataGridView ,没有发现任何问题,是不是特别的容易!

到此这篇关于C#快速实现IList非泛型类接口的自定义类作为数据源的文章就介绍到这了,更多相关C# IList数据源内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://haigear.blog.csdn.net/article/details/128771648

延伸 · 阅读

精彩推荐
  • C#详解c# 数组(Array)

    详解c# 数组(Array)

    这篇文章主要介绍了c# 数组的的相关资料,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下...

    菜鸟教程10662022-09-27
  • C#C#创建SQLite控制台应用程序详解

    C#创建SQLite控制台应用程序详解

    这篇文章主要为大家详细介绍了C#创建SQLite控制台应用程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    cnc6172022-01-17
  • C#WPF实现控件拖动的示例代码

    WPF实现控件拖动的示例代码

    这篇文章主要介绍了WPF实现控件拖动的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    ludewig4062022-02-28
  • C#C#实现餐饮管理系统完整版

    C#实现餐饮管理系统完整版

    这篇文章主要为大家详细介绍了C#实现餐饮管理系统的完整版,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    战歌IT6512022-03-09
  • C#C#在LINQ中使用GroupBy

    C#在LINQ中使用GroupBy

    这篇文章主要介绍了C#在LINQ中如何使用GroupBy,帮助大家更好的理解和学习c#,感兴趣的朋友可以了解下...

    cnxy4852022-10-07
  • C#C#实现在Form里面内嵌dos窗体的方法

    C#实现在Form里面内嵌dos窗体的方法

    这篇文章主要介绍了C#实现在Form里面内嵌dos窗体的方法,涉及C#针对Form窗体的设置及使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下...

    我心依旧4472021-10-24
  • C#C#仪器数据文件解析Excel文件的方法浅析(xls、xlsx)

    C#仪器数据文件解析Excel文件的方法浅析(xls、xlsx)

    这篇文章主要给大家介绍了关于C#仪器数据文件如何解析Excel文件的方法,包括解析xls、xlsx两种格式,文中介绍的非常详细,对大家的学习或者工作具有一...

    马洪彪11012022-01-24
  • C#C#开发之Socket网络编程TCP/IP层次模型、端口及报文等探讨

    C#开发之Socket网络编程TCP/IP层次模型、端口及报文等探讨

    我们在讲解Socket编程前,先看几个和Socket编程紧密相关的概念...

    C#菜鸟教程5832020-12-19