问题标签 [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.

0 投票
2 回答
932 浏览

c# - XML 注释——您如何正确地注释显式实现的接口?

代码:

我的猜测是:

但是,我不确定。ECMA 指南没有帮助区分,所以我想我正在寻找我的猜测是正确的保证。

0 投票
3 回答
1864 浏览

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();

这种技术有什么缺点吗?

0 投票
2 回答
1404 浏览

c# - 为什么 C# 不支持显式实现的虚拟方法?

C# 中的接口方法可以显式实现,以便在将实例显式转换为接口类型时调用它们的实现。为什么类的虚拟方法也不支持这一点?

尽管解决“多重继承”问题对于接口来说是独一无二的,但似乎由于显式实现的成员对接口有用的所有其他原因,它们对虚拟方法也很有用。一个更清晰的回报型协方差模型浮现在脑海中。

编辑:根据要求,一个例子:

我知道使用辅助方法来模拟这一点,但最终效果似乎具有显式实现所具有的任何不良特征,但 API 更脏。我的问题的症结不是如何进行返回类型协方差,而是为什么虚拟方法不支持类似的接口机制。

0 投票
1 回答
2073 浏览

.net - 为什么 Array 类显式地而不是隐式地实现 Ilist 接口?

我的目标语言是带有 .net 框架的 C#。我想知道这个话题背后的意义或原因是什么?

任何意见和建议将受到高度赞赏。

编辑

为什么我问这个问题?因为现在,数组类的一些有用的成员,比如 index of 正在被强制转换!我想知道如果微软拆分 ilist 界面会更好吗?

0 投票
1 回答
214 浏览

.net - 在 F# 中显式实现接口

好的,C# 有显式接口实现 我想在 F# 中做类似的事情。

我有一些接口(和类)

所以我遇到的问题是 Update 的定义有 3 次不同。所以我需要 C# 的Explicitit Interface Implementation的等价物,我想我会在接口中实现它(因为这在 F# 中是合法的)——它只包含一些类型转换。

我的理解是,F# 中的所有接口实现都是显式的,在类中,但是一旦一个接口从另一个接口继承,那么你只能(显式地)实现那个接口。(所以我的 Board 课程只实现了 I Board)

0 投票
1 回答
1594 浏览

c# - 对动态对象使用显式接口实现

我正在试验接口的显式实现。这是用在当前上下文中无效的方法来剥离智能感知。使用/practical-applications-of-the-adaptive-interface-pattern-the-fluent-builder-context/作为参考。为了证明它们是不可调用的,我想我可以使用 dynamic 关键字,因为这样至少我的代码可以编译。它可以编译,但不能按预期工作。动态变量可以访问类方法,但不能访问显式实现的接口方法。

这里有 3 个测试来证明我的观点

有人愿意解释一下原因吗?我想要这个功能的一个例子是证明我不能在 TennisGame 中添加两个以上的玩家。

0 投票
1 回答
79 浏览

silverlight - 在 Silverlight 中绑定到显式实现的通用接口

我知道可以使用以下方式绑定到显式实现的属性:

但是如果接口是通用的呢?

什么是神奇的语法?

0 投票
2 回答
2106 浏览

c# - 覆盖/隐藏显式实现的接口方法

我无法覆盖显式实现接口的方法。

我有两节课。一个基础的称为OurViewModel,一个继承的称为MyViewModel。他们共享一个名为 的方法Validate,直到最近我才能够隐藏该方法的基本版本,如下所示:

这一切都在几天前发生了变化。一个新的界面出现在了现场——

随后,OurViewModel 也发生了变化。我没有要求这个,但它发生了,我不得不忍受它。这个类现在看起来像这样:

我很难弄清楚如何在 MyViewModel 中覆盖或隐藏这个重写的 Validate 方法。如果我尝试将new关键字放置在方法签名中(就像我最初所做的那样),我会收到编译错误。我也不能Validate在 OurViewModel 中将该方法声明为虚拟方法,因为它显式地实现了一个接口。

该怎么办?如果我只是使用来自 IValidatableObject 的签名在 MyViewModel 中重新实现Validate,那会隐藏 OurViewModel 中的实现,还是因为继承规则而以某种方式自找麻烦?

0 投票
5 回答
352 浏览

c# - 在 C# 中,为什么接口实现必须显式实现另一个版本的方法?

举个例子:

为什么IFoo Bar()即使在没有强制Foo转换的IFoo情况下转换为必要的隐式实现?

0 投票
1 回答
975 浏览

c# - 接口的 C# 显式实现破坏了我的 INotifyPropertyChanged

这可能是一个有点愚蠢的问题,但我找不到任何解决方法或想到以下问题的任何解决方案......

正如您从代码中看到的那样,我有一个从 INotifyPropertyChanged 实现的类 Example 和具有 1 个属性 A 的 IExample 接口。

由于我使用的是显式接口实现,我不得不通过我的IExample 接口引用我的 A

这就是我的问题所在。由于A在值更改时显式来自IExamle ,因此不会触发INotifyPropertyChanged ...

这是有道理的。

任何想法/想法如何保持显式接口实现和 INotifyPropertyChanged 并仍然完成工作?

你可能会问我为什么痴迷于显式接口实现

顺便说一句,请随意批评 INotifyPropertyChanged 实现。我觉得我可以重新实现这是一种可以处理显式继承的方法

谢谢大家。

[编辑] 更改了“显式继承与显式接口实现” - 就像 Daniel 纠正了我一样,添加了隐式继承代码。显然其中一个继承应该被注释掉......