问题标签 [multiple-interface-implem]

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 投票
1 回答
39 浏览

php - PHP 通过两种不同的路径实现接口的后果?

在PHP中通过两条不同的路由实现同一个接口会有什么后果,有吗?

我的意思是,是这样的:

在这种情况下,从两个不同的父级myClass实现-和. 这有什么后果吗?我的直觉是 PHP 应该能很好地处理这个问题,但我只是想确定一下。在这种情况下 PHP 究竟做了什么?它是否只是在每次发现接口并每天调用它时检查是否为接口实现了必要的功能,还是做更多的事情?baseInterfacemyInterfacebaseClass

0 投票
2 回答
1524 浏览

c++ - 如何在 C++ 中实现多个 COM 接口?

我正在尝试了解有关浏览器帮助程序对象的示例代码。

在内部,作者实现了一个暴露多个接口(IObjectWithSite、IDispatch)的类。

他的 QueryInterface 函数执行以下操作:

我了解到,从 C 的角度来看,接口指针只是指向 VTable 的指针。所以我认为这意味着 C++ 能够使用 static_cast 返回任何已实现接口的 VTable。

这是否意味着以这种方式构造的类在内存中有一堆 VTable(IObjectWithSite、IDispatch 等)?C++ 对不同接口上的名称冲突做了什么(它们每个都有一个 QueryInterface、AddRef 和 Release 函数),我可以为每个接口实现不同的方法吗?

0 投票
3 回答
3331 浏览

.net - 序列化字典使用 DataContractJsonSerializer 转换为 JSON

我有一个对象树,我用DataContractJsonSerializer. Dictionary<TKey, TValue>被序列化,但我不喜欢标记 - 项目不会像这样呈现:

而是像一个序列化KeyValuePair<TKey, TValue>对象数组:

丑陋,不是吗?

因此,我通过将通用 Dictionary 包装在实现的自定义对象中来避免这种情况ISerializable,并在方法中实现我的自定义序列化GetObjectData(它只需要 3 行)。

现在的问题 - 我不能让我的类派生自Dictionary<TKey, TValue>,所以我在我的自定义类中实现所有逻辑(AddClear等),并应用于私有Dictionary<TKey, TValue>字段。继承会更可取,因为在使用自定义对象时,我将拥有所有通用的 Dictionary 功能。

继承的问题在于它自己Dictionary<TKey, TValue>实现ISerializable,并且DataContractJsonSerializer似乎更喜欢这种实现,即使我ISerializable从我的自定义类中显式实现,如下所示:

实际上,我很惊讶这是可能的,因为它允许我两次实现相同的接口,而显然无法使用显式接口实现 - 所以我在一篇关于多接口实现的博客文章中更详细地分析了这种情况

所以,根据我在那里做的实验,序列化程序应该调用我的 ISerializable 实现,无论内部使用什么类型的转换 -

或者:

但它显然没有发生,因为我在生成的 JSON 中看到KeyValuePair<TKey, TValue>仍然调用序列化程序。我错过了什么可能会发生什么?

更新:到目前为止,我得到的答案和评论几乎只是建议解决方法。但是,我注意到我有一个非常有效的解决方法,所以在提出这个问题时我有两个目标:

  1. 最终让它与原始设计一起工作——我不会仅仅为此改变序列化逻辑,有很多代码和逻辑依赖于它

  2. 为了解开为什么不DataContractJsonSerializer使用我的序列化代码的奥秘 - 正如我提到的博客文章中所见,我已经对接口实现和继承进行了各种实验,并且我确信我掌握了所有内容和过程之外,所以我对无法理解在这种情况下发生的事情感到困扰

0 投票
2 回答
2450 浏览

c++ - Qt DBus:实现多个接口的注册对象

使用 Qt DBus 库,我很难注册实现多个接口的对象。

我使用 C++ 多重继承实现了这两个接口。

该工具为每个接口qdbusxml2cpp生成一个,但没有将接口实现器添加到该对象的方法。DBusAdaptorQDBusConnection

我想在 DBus 服务上发布这个对象。

是否必须实现自己的适配器才能实现这一目标?

0 投票
1 回答
2112 浏览

c++ - 两个接口,多重继承合并到一个容器中?

我偶然发现了以下问题:我有两个包 A 和 B 各自工作正常。每个都有自己的接口和自己的实现。现在我制作了一个包C,将A的适配器与B的具体实现相结合。C实际上只实现了A的接口,并且现在只是在内部继承和使用B的接口。大多数时候,只需要从容器访问接口 A 就足够了,但现在我也需要 B 中的方法可以访问。这是一个简单的例子:

问题是,如何实现包 A 和 B 的组合,以便可以从一个容器访问两个接口,而 A 和 B 的所有实现细节仍然得到继承?

0 投票
17 回答
143503 浏览

java - Java 多重继承

为了完全理解如何解决 Java 的多重继承问题,我有一个经典问题需要澄清。

可以说我有一个类,Animal它有子类BirdHorse我需要创建一个类Pegasus,它既是鸟又是BirdHorsePegasus

我认为这是经典的钻石问题。据我所知,解决这个问题的经典方法是制作Animal,BirdHorseclasses 接口并Pegasus从中实现。

我想知道是否有另一种方法可以解决我仍然可以为鸟和马创建对象的问题。如果有一种方法可以创造动物,那也很好,但不是必需的。

0 投票
2 回答
1687 浏览

java - 为什么无法实现 Comparable多次?

似乎您通常在java.lang.Comparable没有指定类型参数的情况下实现了接口。

由于我只想比较苹果和苹果,我认为指定类型是有意义的。

如果我想介绍另一个类进行比较Area,我想我可以做以下事情:

但是java编译器告诉我:

  1. 为泛型接口指定类型参数是否有任何缺点?
  2. 为什么 Java 不允许我进行这种多重实现?

注意:我使用的是 Java 版本 1.7.0_45

0 投票
1 回答
540 浏览

c# - 我可以全局设置要使用的接口实现吗?

我有一个界面:

...有多个实施者:

我希望能够从全局可访问的位置指定将使用哪个实施者,例如:

...然后从应用程序的任何位置这样调用它:

这可能吗?我明白了,“'SQLiteHHSDBUtils' 是一个'类型',但它像一个'变量'一样使用,它分配给上面的 hhsdbutil。

0 投票
1 回答
454 浏览

c# - 隐藏进程任务管理器的界面

我正在编写一个具有多个接口的 WPF/C# 程序。在某些情况下,我希望一个界面在后台保持打开状态,而另一个界面在前台打开。为此,我使用了 interface2.Show() 方法,而没有在另一个上调用 interface1.Close () 方法。问题是现在我在任务管理器中提到了两个程序,而显然只有一个。有没有办法在任务管理器中只有一个条目? 我的任务管理器有多种声音

似乎我的程序将每个界面视为不同的程序。有没有办法解决它?我哪里错了?

谢谢你们!!!

更新:

调度程序.cs:

调度程序.xaml:

新任务_1.cs:

新任务_1.xaml:

我只发布了与两个窗口有关的代码......

当用户单击按钮添加任务时,将打开新任务窗口。

我正在寻找的是一种在任务管理器中隐藏“新任务”声音的方法,只维护“调度程序”,而两个窗口都是打开的。

0 投票
1 回答
285 浏览

tomcat - 带两个网卡的Tomcat | 一个供外部用户使用 | 其他用于连接 DB

我有很多应用程序部署在带有tomcat的linux机器上。目前它在单个 IP 上运行,现在我需要设置两个不同的 NIC(网络接口卡)。

一个 NIC 仅供外部用户连接到我的应用程序 第二个 NIC 仅供我的应用程序连接到数据库。

请帮助如何配置它。