问题标签 [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++ - C++ - 允许通过基类(接口)访问,禁止通过派生类访问(具体实现)?
假设我有纯抽象类IHandler
和派生自它的类:
我想在我的 MyEngine 中继承该类,以便我可以传递MyEngine*
给任何期望IHandler*
并让他们能够使用process_input
. 但是我不想允许访问,MyEngine*
因为我不想公开实现细节。
这可以通过受保护的继承和隐式转换来完成吗?我只设法得到:
从“MyEngine *”到“IHandler *”的转换存在,但无法访问
由于我来自 C# 背景,这基本上是 C# 中的显式接口实现。这是 C++ 中的有效方法吗?
额外的:
为了更好地了解我为什么要这样做,请考虑以下几点:
类TcpConnection
通过 TCP 实现通信,并且在其构造函数中需要指向 interface 的指针ITcpEventHandler
。当TcpConnection
在套接字上获取一些数据时,它将该数据传递给它的ITcpEventHandler
using ITcpEventHandler::incomingData
,或者当它轮询它使用的传出数据时ITcpEventHandler::getOutgoingData
。
我的类HttpClient
使用TcpConnection
(聚合)并将自身传递给TcpConnection
构造函数,并在这些接口方法中进行处理。
所以TcpConnection
必须实现这些方法,但我不希望用户使用HttpClient
直接访问ITcpEventHandler
方法(incomingData
,getOutgoingData
)。他们应该不能打电话incomingData
或getOutgoingData
直接打电话。
希望这能澄清我的用例。
c# - 是否可以在公开获取 getter 的同时显式实现属性设置器?
当我定义一个包含只写属性的接口时:
并尝试(天真地)明确地实现它,以使该属性也具有公开可用的 getter:
然后我收到以下错误:
错误“IModuleScreenData.Name.get”添加了在接口成员“IModuleScreenData.Name”中找不到的访问器
但是,在这种替代语法之后,或多或少会出现错误:
编译失败,我想我想做的事情是不可能的。我是对的,还是毕竟有一些秘密的语法?
aop - 使用 PostSharp 属性多播排除显式接口方法
假设我有一个界面:
它由许多类实现,例如
我正在使用 PostSharp 属性多播将我的方面 ( MySecurityAspect
) 应用于命名空间中的每个类。
但是我无法弄清楚如何排除显式接口方法实现,即
我曾尝试按照此处的文档,使用以下语句:
但是,这似乎不起作用。
当它们是显式接口实现时,如何使用属性多播排除方法?
c# - 声明显式接口并且不包含定义错误 C#
我创建的显式接口存在问题,并且出现异常,
“x”不包含“y”的定义,并且找不到接受“x”类型的第一个参数的扩展方法“y”
我有一系列的课程。基类:
显式实现它的类:
在另一堂课中,我得到了上述错误。Visual Studio 可以找到接口和类,但它无法解析实例属性。我在这里想念什么。我可能错过了显式继承的更精细的规则之一。
c# - 带有第二个实现的显式接口实现
我正在追踪一个错误,我在 Avalon Dock 2.0 源代码中发现了这个:
ILayoutPreviousContainer
有一个成员string PreviousContainerId { get; set; }
。
这个模式有什么作用?我知道您无法从继承子树外部获取/设置 ,除非PreviousContainerId
您先将. 但我不明白你为什么想要这个。LayoutContent
ILayoutPreviousContainer
在对这种模式进行研究后,我发现这篇SO 帖子让我更加困惑。通过以这种方式实现它,它似乎类似于只拥有一个virtual
以复杂方式实现的属性:
我错过了什么吗?
c# - 使用自动属性显式覆盖
我正在尝试使用 C++/CLI 自动实现的属性来显式覆盖接口。特别是,我写过(在 C++/CLI 中)
要IInterface
在 C# 中显式使用,可以编写
C++/CLI 不支持 EII,但它支持显式覆盖。例如,可以写
我想使用自动实现的属性来定义我的显式覆盖,但是
产生编译器错误C2146
:;
在标识符之前丢失Object
,C2433
:virtual
数据声明中不允许,C4430
:缺少类型说明符,以及C3766
:接口成员未实现。我错过了什么吗?实现我所寻求的合适的 C++/CLI 语法是什么?
c# - 如何对显式接口实现的方法进行单元测试?
我在服务中有以下方法,但我没有在我的单元测试中调用它。该方法使用async/ await
代码,而且(我认为这是导致我问题的原因)具有带有点符号的方法名称,老实说,我不确定它的作用是什么?请参阅下面的示例
执行
单元测试
更新
已尝试建议,但无法编译并显示以下错误消息
c++ - C++ - 显式和隐式命名空间实现差异
如果有人能启发我,我有一个关于命名空间的问题:D
不知道标题对不对,希望是这样xD
“.cpp”文件中的代码称为命名空间的实现, “.h”文件中的代码称为命名空间的声明?正确的?:/
无论如何,我的问题是:
命名空间成员的显式或隐式实现有什么区别(在“.cpp”文件中)?
我的意思是,假设我在“ MyNamespace.h ”中有这个命名空间:
如果在“ MyNamespace.cpp ”中执行此操作(隐式实现) ,则有任何区别:
或者这个(显式实现):
?
非常感谢你:D
有一个美好的一天和一个漂亮的编码!(: