问题标签 [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 投票
4 回答
3223 浏览

c# - Java中是否存在接口的C#“显式实现”?

在 C# 中,如果您有两个具有相同方法的基本接口(例如 F()),您可以使用显式实现来执行不同的 impl。对于 F()。这使您可以区别对待对象,对应于当前的观点:作为 IMyInterface1 或 IMyInterface2。这在Java中可能吗?

0 投票
1 回答
8466 浏览

c# - 如何使用反射.emit 发出显式接口实现?

观察以下简单的源代码:

下面是使用 Reflector 反编译 A.dll 程序集获得的等效 C# 代码:

现在,如果我希望该MyType类型显式地实现IMyInterface接口怎么办?所以我采取这些措施:

并切换注释以产生此代码:

但是现在,应用程序无法创建动态类型。这一行:

抛出以下异常:

谁能告诉我我的代码有什么问题?

谢谢。

0 投票
4 回答
9851 浏览

c# - C#语言设计:事件的显式接口实现

关于 C# 语言设计的小问题 :))

如果我有这样的界面:

可以使用 C# 3.0 自动实现的属性显式实现这样的接口:

但是如果我在界面中有一个事件:

并尝试使用类似字段的事件显式实现它:

我将收到以下编译器错误:

error CS0071: An explicit interface implementation of an event must use event accessor syntax

我认为类场事件是自动实现属性的某种二元论。

所以我的问题是:做这种限制的设计原因是什么?

0 投票
3 回答
1252 浏览

c# - 从其他接口继承的接口的显式 C# 接口实现

考虑以下三个接口:

现在考虑以下实现 IInterface1 和 IInterface 2 的类:

这会导致错误,因为 SomeEvent 不是 IInterface1 或 IInterface2 的一部分,它是 IBaseInterface 的一部分。

Foo 类如何同时实现 IInterface1 和 IInterface2?

0 投票
2 回答
3314 浏览

c# - 如何使用反射访问显式实现的方法?

通常,我在反射中访问一个方法,如下所示:

但是,当 M 是显式实现时,这会失败:

如何使用反射访问显式实现的方法?

0 投票
1 回答
6994 浏览

c# - C#:通过显式指定接口来覆盖属性

在尝试ICollection<T>.IsReadOnly从类中覆盖属性的显式接口实现时Collection<T>,我遇到了一些文档,指出显式接口成员实现不能被覆盖,因为它们不能具有诸如virtualor之类的修饰符abstract。在MSDN上,他们甚至通过创建由显式接口成员实现调用的另一个抽象或虚拟成员来指定如何使显式接口成员实现可用于继承。到目前为止没有问题。

但后来我想知道:为什么在 C# 中可以通过显式指定接口来覆盖任何式实现的接口成员?

例如,假设我有一个像这样的简单接口,带有一个属性和方法:

以及一个显式实现接口的类A,并且有一个Test()调用它自己的接口成员实现的方法。

如您所见,这四个成员都不是虚拟的或抽象的,所以当我这样定义一个类时B

然后你会期望Bcast的实例A表现得像A. 它确实:

现在来了。创建一个类,它是类声明中除了一件事C的精确副本:B

现在 的实例C,当转换为 时A,其行为不像A,而是像C

甚至该Test()方法现在也调用了C! 为什么是这样?

0 投票
1 回答
1624 浏览

c# - 访问 IEnumerable.GetEnumerator() 来自 IEnumerable.GetEnumerator()

请查找代码中未在类中定义 getenuemrator() 方法的错误

0 投票
6 回答
746 浏览

c# - .NET C# 父接口中祖父接口方法的显式实现

这个标题是不是很拗口?...

这是我正在尝试做的事情:

我的问题是……调用 Bar() 很不方便:

所以......有没有办法IFoo.Bar(){...}在我的类中声明,而不是基本上将两个接口合并为一个?

如果不是,为什么?

0 投票
4 回答
182 浏览

c# - 如何选择是实现接口还是显式实现接口?

实现接口有两种方式:

不同之处在于,如果接口是显式实现的,则必须在允许某人调用该Foo方法之前将其实际转换为给定接口。

如何决定使用哪一个?

0 投票
7 回答
17537 浏览

c# - 如何在基类上调用显式实现的接口方法

我有一种情况,两个类(一个从另一个派生)都显式地实现了相同的接口:

从派生类的实现中I.M(),我想调用基类的实现,但我不知道该怎么做。到目前为止,我尝试的是这个(在 B 类中):

有没有办法做到这一点,而不必实现另一个(非接口显式)辅助方法?


更新

我知道可以使用派生类调用的“帮助器”方法,例如:

我还可以更改它以非显式地实现接口。但我只是想知道如果没有任何这些解决方法是否有可能。