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

 更新时间:2023年02月06日 09:43:05   作者:河西石头  
本文主要介绍了C#快速实现IList非泛型类接口的自定义类作为数据源,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

使用可以绑定数据源的控件我们需要有实现了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数据源内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 利用Aspose.Cells和Excel模板导出统计数据

    利用Aspose.Cells和Excel模板导出统计数据

    这篇文章主要为大家详细介绍了利用Aspose.Cells和Excel模板导出复杂的统计数据,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-12-12
  • c#中查询表达式GroupBy的使用方法

    c#中查询表达式GroupBy的使用方法

    本篇文章介绍一下GroupBy的使用方法,包括实验基础数据用例,通过实例代码给大家介绍的非常详细,需要的朋友跟随小编一起看看吧
    2021-11-11
  • C#实现Word转PDF的方法总结

    C#实现Word转PDF的方法总结

    这篇文章主要为大家详细介绍了C#中实现Word转PDF的常用方法,文中的示例代码讲解详细,具有一定的学习价值,有需要的小伙伴可以参考下
    2023-10-10
  • WinForm绘制圆角的方法

    WinForm绘制圆角的方法

    这篇文章主要介绍了WinForm绘制圆角的方法,涉及C#中GraphicsPath模块的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-08-08
  • C#如何操作Excel数据透视表

    C#如何操作Excel数据透视表

    这篇文章主要为大家详细介绍了C#如何操作Excel数据透视表, 创建透视表、设置行折叠、展开等操作,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04
  • C#中String和StringBuilder的简介与区别

    C#中String和StringBuilder的简介与区别

    今天小编就为大家分享一篇关于C#中String和StringBuilder的简介与区别,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10
  • C# 4.0 大数的运算--BigInteger的应用详解

    C# 4.0 大数的运算--BigInteger的应用详解

    本篇文章是对C# 4.0 大数的运算 BigInteger的应用进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • C#中事件的动态调用实现方法

    C#中事件的动态调用实现方法

    这篇文章主要介绍了C#中事件的动态调用实现方法,对比传统思路优劣给出了一个新的解决方案,需要的朋友可以参考下
    2014-09-09
  • C#条件编译、内联函数、CLS介绍

    C#条件编译、内联函数、CLS介绍

    这篇文章介绍了C#的条件编译、内联函数、CLS,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • C#通过oledb访问access数据库的方法

    C#通过oledb访问access数据库的方法

    这篇文章主要介绍了C#通过oledb访问access数据库的方法,实例分析了C#操作access数据库的相关技巧,需要的朋友可以参考下
    2015-06-06

最新评论