iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C#快速实现IList非泛型类接口的自定义类作为数据源
  • 474
分享到

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

C#IList数据源 2023-02-06 12:02:18 474人浏览 安东尼
摘要

目录一、利用VS的修补程序快速继承IList二、实现必须的成员使用可以绑定数据源的控件我们需要有实现了IList接口的类作为数据源,我们有很多的方法,比如使用ArrayList或者L

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

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

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

在这里插入图片描述

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

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

在这里插入图片描述

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

二、实现必须的成员

   #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

我们来看看效果:

在这里插入图片描述

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

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

--结束END--

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

本文链接: https://www.lsjlt.com/news/194306.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作