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

oop - 接口与基类

什么时候应该使用接口,什么时候应该使用基类?

如果我不想实际定义方法的基本实现,它是否应该始终是一个接口?

如果我有狗和猫课。为什么我要实现 IPet 而不是 PetBase?我可以理解为 ISheds 或 IBarks (IMakesNoise?)提供接口,因为这些接口可以逐个放置在宠物上,但我不明白哪个用于通用宠物。

0 投票
5 回答
2673 浏览

.net - 如何解决 Generic.IList 之间的调用歧义.this[] 和 IList.this[]?

我有一个集合,它实现了一个扩展 IList<T> 和 List 的接口。

这意味着我有两个版本的索引器。

我希望使用通用实现,所以我通常实现它:

我只需要 IList 版本进行序列化,所以我明确地实现它,以保持它隐藏:

但是,在我的单元测试中,以下

导致编译器错误

以下方法或属性之间的调用不明确

我对此有点惊讶;我相信我以前做过,而且效果很好。我在这里想念什么?如何让 IList<T> 和 IList 在同一个接口中共存?

编辑IList<T>没有实现 IList,我必须实现 IList 进行序列化。我对解决方法不感兴趣,我想知道我缺少什么。

再次编辑:我不得不从界面中删除 IList 并将其移动到我的班级。我不想这样做,因为实现接口的类最终会被序列化为 Xaml,这需要集合来实现 IDictionary 或 IList...

0 投票
5 回答
3752 浏览

c# - C#中的XML序列化

我有一个明确实现接口的简单类型。

有没有办法序列化和反序列化 IMessageHeader 类型的对象?

尝试时出现以下错误

“无法序列化接口 IMessageHeader”

0 投票
9 回答
72315 浏览

c# - 结构实现接口是否安全?

我似乎记得读过一些关于结构通过 C# 在 CLR 中实现接口的坏处,但我似乎找不到任何关于它的信息。不好吗?这样做会产生意想不到的后果吗?

0 投票
5 回答
30091 浏览

c# - 在 C# 中使用泛型创建数学库

是否有任何可行的方法使用泛型来创建不依赖于选择存储数据的基本类型的数学库?

换句话说,假设我想写一个 Fraction 类。分数可以用两个整数或两个双精度数或诸如此类的形式表示。重要的是基本的四种算术运算都定义得很好。所以,我希望能够写Fraction<int> frac = new Fraction<int>(1,2)和/或Fraction<double> frac = new Fraction<double>(0.1, 1.0).

不幸的是,没有代表四个基本操作(+、-、*、/)的接口。有没有人找到一种可行的、可行的方法来实现这一点?

0 投票
6 回答
7289 浏览

c# - 在 C++ 中定义一个需要在 C# 和 C++ 中实现的接口

我有一个在 C++ 中定义的接口,现在需要在 C# 中实现。解决此问题的最佳方法是什么?我根本不想在我的接口定义中使用 COM。我现在解决这个问题的方法是有两个接口定义,一个在 C++ 中,一个在 C# 中。然后我将 C# 接口公开为 COM 服务器。这是我用 C++ 编写的应用程序,可以调用 C#。无论如何我可以避免在 C++ 和 C# 中定义我的实现吗?

0 投票
11 回答
80453 浏览

java - 为什么要在 Java 中使用静态嵌套接口?

我刚刚在我们的代码库中找到了一个静态嵌套接口。

我以前从未见过这种情况。原始开发人员遥不可及。因此我不得不问:

静态接口背后的语义是什么?如果我删除static? 为什么会有人这样做?

0 投票
4 回答
2586 浏览

wpf - WPF 无法将数据绑定到接口?

我正在尝试将 WPF 表单中的控件绑定到接口,但出现运行时错误,它无法找到接口的属性。

这是我用作数据源的类:

这是 XAML(摘录):

这是背后的代码(再次摘录):

请注意,我用作数据源的类需要是一个实体,因为我通过 entlib 的策略注入应用程序块使用策略注入。

我在运行时收到此错误:

0 投票
6 回答
23091 浏览

c# - 通过反射实现接口

如何通过 C# 中的反射获得接口的所有实现?

0 投票
5 回答
329 浏览

c# - 在存储库接口的各种实现上使用相同的测试套件

我一直在按照 Rob Connery 的 Asp.net MVC 店面用 C# 制作一个小玩具 Web 应用程序。

我发现我有一个存储库接口,称之为 IFooRepository,带有方法,比如说

我有这三个实现:ISqlFooRepository、IFileFooRepository 和 IMockFooRepository。

我也有一些测试用例。我想做的,但还没有想出如何去做,是对这三个实现中的每一个运行相同的测试用例,并为每个接口类型的每个测试通过一个绿色勾号。

例如

我希望这个测试方法运行 3 次,环境中的一些变化允许它获取三种不同类型的存储库。目前我有三个剪切和粘贴的测试类,它们仅在私有帮助器方法 IFooRepository GetRepository() 的实现上有所不同;显然,这很臭。

但是,我不能仅仅通过合并剪切和粘贴方法来消除重复,因为它们需要存在、公开并标记为测试才能运行测试。

我正在使用 Microsoft 测试框架,如果可以的话,我更愿意继续使用它。但是关于如何在 MBUnit 中执行此操作的建议也会引起一些兴趣。