【发布时间】:2019-01-29 04:58:58
【问题描述】:
我正在尝试在 ESPRIT api 中实现一个类的接口,该接口需要一个名为“Item”的索引器。 (我猜该接口来自 VB.NET,但我没有源代码。)显然“Item [index]”索引器默认情况下由编译器自动生成,但我收到以下错误:
我意识到[System.Runtime.CompilerServices.IndexerName("Item")] 是多余的;它只是为了明确地证明 Item 已生成并且错误仍然存在。
尝试实现 public ToolBarControl Item[int index] '会破坏课堂其余部分的所有内容。
Edit1:第三个屏幕截图显示IToolBar.this,但我确实尝试了IToolBar.Item,结果如上所述。
看起来我不是第一个请求命名迭代器的人,但我认为生成的命名索引器应该满足要求。 https://github.com/dotnet/csharplang/issues/471
如何实现这个索引器来满足接口?
注意:为了完整性、未来故障排除和回答 cmets 中提出的问题,我进行了以下编辑,但我已经知道此特定实例的解决方案正在实施 get_Item(int index),如已接受的答案中所述。
Edit2:回答“Visual Studio 的建议是什么?”如您所见,它在替换之前就知道Index 将出错,因为Item 上没有定义Index 参数(我已经对此进行了测试,它确实失败了。)其他两个都不是自动实施工作的选项。
【问题讨论】:
-
您正在使用的这个自定义库是否有 API 文档?
-
删除您自己的代码后,当您将鼠标悬停在 Esprit.Toolbar 上时,Visual Studio 建议执行什么?
-
这个缺失成员的接口规范是什么?
-
你确定
this[]的返回类型是'ToolBarControl'? -
如果找不到文档,请在反汇编程序中打开参考,看看它具体在寻找什么。 @Neil 可能是对的,它可能期待来自索引器的“对象”或“IToolbarControl”。
标签: c# .net vb.net interface indexer