问题标签 [explicit-implementation]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - XML 注释——您如何正确地注释显式实现的接口?
代码:
我的猜测是:
但是,我不确定。ECMA 指南没有帮助区分,所以我想我正在寻找我的猜测是正确的保证。
c# - 显式转换为 IDisposable
我正在使用 someXmlReader
和object 对某些块XmlWriter
内的字符串做一些必要的工作。try...catch
我知道使用符号using (XmlReader NewReader = XmlReader.Create(...))
是首选语法,但我不太喜欢这样,所以我也在附加finally
块并执行NewReader.Close();
and NewWriter.Close();
。
然而,代码分析抱怨这些对象没有被释放,从而迫使我以某种方式调用Dispose()
方法。
问题是在这些类中Dispose()
方法是显式实现的,所以我必须使用((IDisposable)(NewReader)).Dispose();
and ((IDisposable)(NewWriter)).Dispose();
。
这种技术有什么缺点吗?
c# - 为什么 C# 不支持显式实现的虚拟方法?
C# 中的接口方法可以显式实现,以便在将实例显式转换为接口类型时调用它们的实现。为什么类的虚拟方法也不支持这一点?
尽管解决“多重继承”问题对于接口来说是独一无二的,但似乎由于显式实现的成员对接口有用的所有其他原因,它们对虚拟方法也很有用。一个更清晰的回报型协方差模型浮现在脑海中。
编辑:根据要求,一个例子:
我知道使用辅助方法来模拟这一点,但最终效果似乎具有显式实现所具有的任何不良特征,但 API 更脏。我的问题的症结不是如何进行返回类型协方差,而是为什么虚拟方法不支持类似的接口机制。
.net - 为什么 Array 类显式地而不是隐式地实现 Ilist 接口?
我的目标语言是带有 .net 框架的 C#。我想知道这个话题背后的意义或原因是什么?
任何意见和建议将受到高度赞赏。
编辑
为什么我问这个问题?因为现在,数组类的一些有用的成员,比如 index of 正在被强制转换!我想知道如果微软拆分 ilist 界面会更好吗?
.net - 在 F# 中显式实现接口
好的,C# 有显式接口实现 我想在 F# 中做类似的事情。
我有一些接口(和类)
所以我遇到的问题是 Update 的定义有 3 次不同。所以我需要 C# 的Explicitit Interface Implementation的等价物,我想我会在接口中实现它(因为这在 F# 中是合法的)——它只包含一些类型转换。
我的理解是,F# 中的所有接口实现都是显式的,在类中,但是一旦一个接口从另一个接口继承,那么你只能(显式地)实现那个接口。(所以我的 Board 课程只实现了 I Board)
c# - 对动态对象使用显式接口实现
我正在试验接口的显式实现。这是用在当前上下文中无效的方法来剥离智能感知。使用/practical-applications-of-the-adaptive-interface-pattern-the-fluent-builder-context/作为参考。为了证明它们是不可调用的,我想我可以使用 dynamic 关键字,因为这样至少我的代码可以编译。它可以编译,但不能按预期工作。动态变量可以访问类方法,但不能访问显式实现的接口方法。
这里有 3 个测试来证明我的观点
有人愿意解释一下原因吗?我想要这个功能的一个例子是证明我不能在 TennisGame 中添加两个以上的玩家。
silverlight - 在 Silverlight 中绑定到显式实现的通用接口
我知道可以使用以下方式绑定到显式实现的属性:
但是如果接口是通用的呢?
什么是神奇的语法?
c# - 覆盖/隐藏显式实现的接口方法
我无法覆盖显式实现接口的方法。
我有两节课。一个基础的称为OurViewModel
,一个继承的称为MyViewModel
。他们共享一个名为 的方法Validate
,直到最近我才能够隐藏该方法的基本版本,如下所示:
这一切都在几天前发生了变化。一个新的界面出现在了现场——
随后,OurViewModel 也发生了变化。我没有要求这个,但它发生了,我不得不忍受它。这个类现在看起来像这样:
我很难弄清楚如何在 MyViewModel 中覆盖或隐藏这个重写的 Validate 方法。如果我尝试将new
关键字放置在方法签名中(就像我最初所做的那样),我会收到编译错误。我也不能Validate
在 OurViewModel 中将该方法声明为虚拟方法,因为它显式地实现了一个接口。
该怎么办?如果我只是使用来自 IValidatableObject 的签名在 MyViewModel 中重新实现Validate
,那会隐藏 OurViewModel 中的实现,还是因为继承规则而以某种方式自找麻烦?
c# - 在 C# 中,为什么接口实现必须显式实现另一个版本的方法?
举个例子:
为什么IFoo Bar()
即使在没有强制Foo
转换的IFoo
情况下转换为必要的隐式实现?
c# - 接口的 C# 显式实现破坏了我的 INotifyPropertyChanged
这可能是一个有点愚蠢的问题,但我找不到任何解决方法或想到以下问题的任何解决方案......
正如您从代码中看到的那样,我有一个从 INotifyPropertyChanged 实现的类 Example 和具有 1 个属性 A 的 IExample 接口。
由于我使用的是显式接口实现,我不得不通过我的IExample 接口引用我的 A
这就是我的问题所在。由于A在值更改时显式来自IExamle ,因此不会触发INotifyPropertyChanged ...
这是有道理的。
任何想法/想法如何保持显式接口实现和 INotifyPropertyChanged 并仍然完成工作?
你可能会问我为什么痴迷于显式接口实现
顺便说一句,请随意批评 INotifyPropertyChanged 实现。我觉得我可以重新实现这是一种可以处理显式继承的方法
谢谢大家。
[编辑] 更改了“显式继承与显式接口实现” - 就像 Daniel 纠正了我一样,添加了隐式继承代码。显然其中一个继承应该被注释掉......