DataTable : IListSource,为什么没有实现接口了?

shankaipingo 2009-08-19 11:48:25
接口的抽象方法,其访问限制符都已指定是public,所以类在实现方法时,必须显式地使用public修饰符。

我查看了一下datatable这个类,他的类关系是
public class DataTable : MarshalByValueComponent, IListSource, ISupportInitializeNotification, ISupportInitialize, ISerializable, IXmlSerializable


// 摘要:
// 向对象提供返回可以绑定到数据源列表的功能。
[TypeConverter("System.Windows.Forms.Design.DataSourceConverter, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
[Editor("System.Windows.Forms.Design.DataSourceListEditor, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "System.Drawing.Design.UITypeEditor, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
[MergableProperty(false)]
public interface IListSource
{
// 摘要:
// 获取表示集合是否是 System.Collections.IList 对象集合的值。
//
// 返回结果:
// 如果集合是 System.Collections.IList 对象集合,则为 true;否则,为 false。
bool ContainsListCollection { get; }

// 摘要:
// 从不实现 System.Collections.IList 本身的对象返回可以绑定到数据源的 System.Collections.IList。
//
// 返回结果:
// 对象中可以绑定到数据源的 System.Collections.IList。
IList GetList();
}


我怎么就找不到DataTable的GetList方法呢??
...全文
117 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhehan54 2009-08-20
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zming 的回复:]
楼上正解。

下面是显式与隐式实现接口的不同

C# codepublicclass DataTable : IListSource
{
IList IListSource.GetList()// 显式实现接口 {// ...... }
}

C# codepublicclass DataTable : IListSource
{
IList GetList()// 隐式实现接口 {// ...... }
}



[/Quote]

请问下
这两种实现接口的方式分别有什么好处?
这两种情况分别会在什么时候能用的 到?
zming 2009-08-20
  • 打赏
  • 举报
回复
楼上正解。

下面是显式与隐式实现接口的不同


public class DataTable : IListSource
{
IList IListSource.GetList() // 显式实现接口
{
// ......
}
}



public class DataTable : IListSource
{
IList GetList() // 隐式实现接口
{
// ......
}
}



shankaipingo 2009-08-20
  • 打赏
  • 举报
回复
学到了.3Q
Dobzhansky 2009-08-19
  • 打赏
  • 举报
回复
接口实现是有两种方式的: 显式, 隐式

//
IList IListSource.GetList ()

public IList GetList ()


对于第一种实现方式, 对象必须转换为相应接口后, 才能调用, DataTable 正是显式实现的 IListSource 接口.
因此:


DataTable tbl;

IListSource listSource = tbl as IListSource;
IList list = listSource.GetList();

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧