【问题标题】:How to do default property explicit interface in vb.net?如何在 vb.net 中做默认属性显式接口?
【发布时间】:2016-03-23 23:20:23
【问题描述】:

我一直在想怎么做

object IList.this[int index]
{
    get { }
    set { }
}

public T this[int index]
{
    get { }
    set { }
}

在 VB.net 中,我在 google 上找不到任何东西。

澄清一下,我正在尝试实现在 2 个不同接口中定义的默认属性。

谢谢:)

【问题讨论】:

  • 我实际上怀疑这不能在 VB.net 中完成。

标签: vb.net properties interface default explicit


【解决方案1】:

您在输入Implements IFoo(Of T) 语句后按下回车键,VB.NET IDE 将自动生成实现方法。制作:

Default Public Property Item(index As Integer) As T Implements IFoo(Of T).Item
    '' Get and Set...
End Property

Private Property IList_Item(index As Integer) As T Implements IList(Of T).Item
    '' Get and Set...
End Property

我不得不猜测 IFoo,因为您的 sn-p 不够完整,请替换您的。它在 IList.Item 实现上确实失败了,您必须删除 Default 关键字,因为一个类只能有一个 Default 属性(又名“索引器”)。请注意,在 VB.NET 中,所有接口方法的实现都是显式的,可能是减速带。而那个“Item”就是索引器的名字。

【讨论】:

  • 哦,嗯,一个接口没有通用封装,所以只有一个接口有 Of T,比如 IList(Of T) 和 IList。
  • 我正在想一个为什么你会隐藏你的代码并故意发布一个伪劣的 sn-p 的原因。尽我所能,我想不出一个。
  • 我并没有试图隐藏我的代码,我只是试图显示相关的代码部分,请注意这两个属性的区别在于类型和显式标识符。所以不要用不相关的代码来膨胀帖子。
  • 除了罪魁祸首是默认属性,因为两个接口都定义了一个默认属性,vb.net 在尝试显式处理 2 个不同的默认属性时会抱怨,而 c# 对此没有问题。
猜你喜欢
  • 2010-09-22
  • 2020-09-15
  • 2015-03-04
  • 1970-01-01
  • 1970-01-01
  • 2010-11-14
  • 1970-01-01
  • 2013-01-15
  • 2018-12-13
相关资源
最近更新 更多