问题标签 [interface]

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 回答
3268 浏览

c# - 如何使用从程序集中动态加载的接口并调用其成员

我有一些代码来加载程序集并获取所有类型,它们实现了某个接口,就像这样(假设 asm 是一个有效且已加载的程序集)。

现在我被困住了:我需要创建这些对象的实例并调用对象的方法和属性。而且我需要将创建的对象的引用存储在一个数组中以供以后使用。

0 投票
2 回答
10910 浏览

java - JPA 映射接口

当 List 类型是接口时,我无法创建映射。看起来我需要创建一个抽象类并使用鉴别器列是这种情况吗?我宁愿不必,因为抽象类只包含一个抽象方法,我宁愿只保留接口。

我有一个界面让我们称之为 Account

现在我有 Account OverSeasAccount 和 OverDrawnAccount 的两个具体实现者

我有一个名为 Work with a List 的课程

我正在查看鉴别器字段,但我似乎只能对抽象类执行此操作。是这样吗?任何指针表示赞赏。我可以对接口使用鉴别器吗?

0 投票
6 回答
244 浏览

c# - 声明成员时可以指定接口吗?

我需要我的类的成员作为控件,并让它实现我们定义的接口。

如果我这样声明...

...然后我没有得到接口方法,但是如果我这样声明它...

...然后我没有得到控制方法。有没有办法指定 MyMember 必须初始化为继承自两者的类型?我在 MSDN 上找不到。就像是...

... 或者 ...

...除了这些都不起作用。我可以在声明成员时指定接口吗?如果可以,如何指定?

0 投票
2 回答
157 浏览

asp.net - 我应该实现什么接口来为我的班级创建步骤驱动事件?

我想创建与数据阅读器类类似的行为,但要创建一个定制的电子邮件程序,以便我可以执行以下操作

是否有建议的接口或 mustInherit 类来利用步进功能,以便 sender.Send() 命令准备下一封要发送的电子邮件,如果存在则返回 true?

0 投票
15 回答
4366 浏览

class - 有没有静态鸭子类型的语言?

声明成员时可以指定接口吗?

在考虑了这个问题一段时间后,我突然想到静态鸭子类型的语言可能真的有效。为什么预定义的类不能在编译时绑定到接口?例子:

你知道任何支持这种功能的语言吗?它对 Java 或 C# 有帮助吗?它在某些方面存在根本性缺陷吗?我知道你可以继承 MyClass 并实现接口或使用 Adapter 设计模式来完成同样的事情,但这些方法看起来像是不必要的样板代码。

0 投票
10 回答
4307 浏览

interface - 鸭子类型与旧的“变体”类型和/或接口有何不同?

我经常看到“鸭子打字”这个短语在流传,甚至遇到一两个代码示例。我太懒了,没时间做自己的研究,有人可以简单地告诉我:

  • 'duck type' 和 old-skool 'variant type' 之间的区别,以及
  • 提供一个我可能更喜欢鸭子打字而不是变体打字的例子,以及
  • 提供一个我必须使用鸭子打字来完成的事情的例子?

鸭子打字插图由 The Register 提供

我并不是想通过怀疑这种“新”结构的力量来显得家常便饭,我也不是通过拒绝进行研究来回避这个问题,但我对我所看到的所有蜂拥而至的炒作感到震惊最近呢。对我来说,它看起来像没有打字(又名动态打字),所以我没有立即看到优势。

附录:感谢到目前为止的示例。在我看来,使用“O->can(Blah)”之类的东西相当于进行反射查找(这可能并不便宜),和/或与编译器可能会说的(O 是 IBlah)大致相同能够为您检查,但后者的优点是可以将我的 IBlah 接口与您的 IBlah 接口区分开来,而其他两个则没有。当然,每个方法都有很多微小的接口会变得混乱,但同样可以检查很多单独的方法......

...所以我还是不明白。这是一个很棒的节省时间的方法,还是一个全新的麻袋里的旧东西?需要鸭子打字的例子在哪里?

0 投票
5 回答
14223 浏览

c++ - C ++:派生+基类实现单个接口?

在 C++ 中,是否可以让基类和派生类实现单个接口?

例如:

这失败了,因为 Derived 无法实例化。就编译器而言,从未定义过 Interface::BaseFunction。

到目前为止,我发现的唯一解决方案是在 Derived 中声明一个传递函数

有没有更好的解决方案?


编辑:如果重要的话,这是我在使用 MFC 对话框时遇到的一个现实问题。

我有一个从 CDialog 派生的对话框类(可以说是 MyDialog)。由于依赖问题,我需要创建一个抽象接口(MyDialogInterface)。使用 MyDialogInterface 的类需要使用 MyDialog 特有的方法,但也需要调用 CDialog::SetParent。我刚刚通过创建 MyDialog::SetParent 并将其传递给 CDialog::SetParent 来解决它,但想知道是否有更好的方法。

0 投票
3 回答
438 浏览

c# - 需要有关将 ORM 和 SQL 与遗留系统结合的建议

我们正在将遗留系统移植到 .NET,既是为了清理架构,也是为了利用许多在遗留系统中不容易实现的新可能性。

注意:在提交之前阅读我的帖子时,我注意到我可能在某些地方描述得太快了,即。掩盖了细节。如果有任何不清楚的地方,请发表评论(不是答案),我会尽可能多地补充

遗留系统使用数据库和 100% 自定义编写的 SQL。这导致了宽表(即许多列),因为需要数据的代码只检索工作所需的内容。

作为移植的一部分,除了自定义 SQL 之外,我们还引入了一个我们可以使用的 ORM 层。我们选择的 ORM 是 DevExpress XPO,其中一个特性也给我们带来了一些问题,即当我们为 Employee 表定义 ORM 类时,我们必须为所有列添加属性,否则它不会为我们检索它们。

这也意味着当我们检索一个 Employee 时,我们会得到所有的列,即使我们只需要一些列。

拥有 ORM 的一个好处是我们可以将一些与属性相关的逻辑放入相同的类中,而不必到处复制它。例如,将名字、中间名和姓氏组合成“显示名称”的简单表达式可以放在那里,作为示例。

但是,如果我们在某处编写 SQL 代码,无论是在类似 DAL 的构造中,还是在任何地方,我们都需要复制这个表达式。这感觉不对,看起来像是错误和维护噩梦的秘诀。

但是,由于我们有两个选择:

  • ORM,获取所有内容,可以编写一次逻辑
  • SQL,获取我们需要的,需要复制逻辑

然后我们想出了一个替代方案。由于 ORM 对象是从字典代码生成的,我们决定也生成一组哑类。这些将具有相同数量的属性,但不会以相同的方式绑定到 ORM。此外,我们为所有对象添加了接口,也生成了,并使 ORM 和 dum 对象都实现了这个接口。

这使我们能够将其中的一些逻辑移出到与接口相关的扩展方法中。由于哑对象携带了足够的信息让我们将它们插入到我们的 SQL 类中,而不是返回 DataTable,我们可以返回一个 List,并提供可用的逻辑,这看起来是可行的。

然而,这导致了另一个问题。如果我想编写一段代码,仅在我需要知道他们是谁(即他们在系统中的标识符)以及他们的姓名(名字、中间名和姓氏)的上下文中显示或处理员工,如果我使用这个愚蠢的对象,编译器无法保证调用我的代码确实提供了所有这些东西。

一种解决方案是让我们让对象知道哪些属性已被赋值,并且尝试读取未赋值的属性会因异常而崩溃。这使我们有机会在运行时发现代码未传递足够信息的合同违约。

这对我们来说也很笨拙。

所以基本上我想要的建议是是否有其他人曾经或正在这种情况下,以及您可以提供的任何提示或建议。

目前,我们不能拆散桌子。由于端口的大小,旧应用程序仍需存在数年,并且 .NET 代码不是 3 年内发布类型的项目,但将在此过程中逐步发布。因此,遗留系统和 .NET 代码都需要使用相同的表。

我们也知道这不是一个理想的解决方案,所以请不要提出“你不应该这样做”这样的建议。我们很清楚这一点:)


我们研究过的一件事是使用“合同”创建一个 XML 文件或类似文件。所以我们可以在这个 XML 文件中加入如下内容:

  • 有一个 Employee 类具有这 50 个属性
  • 此外,对于程序的各个部分,我们有这 7 种变体
  • 此外,我们有这 10 条逻辑,每条都需要属性 X、Y 和 Z(X、Y 和 Z 在这 10 种之间变化)

这可以让我们对这 8 个类(全类 + 7 个较小的变体)进行代码生成,并让生成器检测到变体 #3 的属性 X、Y 和 K 是否存在,然后我可以将代码绑定到逻辑或逻辑需要自动进入此类的接口。这将允许我们拥有许多不同类型的员工类,具有不同程度的属性覆盖,并让生成器自动将此类支持的所有逻辑添加到它。

然后我的代码可以说我需要一个 IEmployeeWithAddressAndPhoneNumbers 类型的员工。

这看起来也很笨重。

0 投票
1 回答
66 浏览

ms-access - 如何在 Access 中构建带有模块的接口?

我在 Access vba 中编写了一些代码模块。每个代码都出于各种目的而运行,并对数据库执行各种操作。
我对vba没有太多经验。我计划构建一个“界面”或“表单”,以便用户可以选择他想要执行的操作并基于该特定代码运行。

有人可以指导我到一个教程或网站,向我展示一些关于这方面的信息吗?

0 投票
3 回答
554 浏览

c - 如何在 C -> ruby​​ 接口中返回变量?

对先前问题的跟进,显示了当我尝试从目标库获取错误消息时失败的部分:

我希望在@msg 中返回错误消息,但是运行时我得到以下信息:

如果我使用符号 (:msg) 来代替:

显然,我遗漏了一些关于在 ruby​​ 和 C 之间传递参数的内容。我需要什么样的 ruby​​ 变量才能返回我的值?