问题标签 [sealed]

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

c# - 自定义媒体元素

我目前MediaElements正在创建的应用程序中使用一些。我正在动态创建它们并将它们添加到包装面板中。

问题是我需要能够为它们添加一个密钥,以便我可以返回并找到一个特定的。

我打算继承MediaElement并添加密钥作为成员。不幸的是我不能这样做,因为它是一个密封的类。

所以我尝试创建一个包含 aMediaElement和密钥的类,但我无法将它添加到 GUI,因为它不是UIElement.

无论如何我可以做到这一点吗?我只需要能够添加MediaElements并且他们能够稍后返回并找到它们,以便我可以修改或删除它们。

0 投票
1 回答
739 浏览

class - 为什么是密封和单例?

可能重复:
最终目的和密封

大家好,

我们什么时候应该选择设计一个密封的类?

我们什么时候应该选择设计一个单例类?

0 投票
1 回答
192 浏览

scala - 在类型和唯一值之间建立已知的 1:1 关系

鉴于我有一种使用密封特征和表示值的案例对象的枚举,是否可以强制执行一种机制来检索给定类型的单个唯一值,而不需要隐式参数?

隐含这将是

是否可以删除隐式参数进行测试?也就是说,要确保 V 是已定义的 Enum 子类型(显然, test[Enum] 应该失败)。戈尔迪安结是:

?

0 投票
1 回答
380 浏览

.net - 使用密封的具体类对第三方 API 进行单元测试

刚刚开始 TDD,一切都很顺利,直到我碰到这堵砖墙。

我正在围绕第三方 API 编写外观。API 非常好,因为一切都通过接口访问,所以在测试我的外观时很容易模拟。

整个 API 是通过根接口访问的,您可以从中深入了解接口的深层层次结构。在标准 IoC 实践中,我的外观在其构造函数中采用了这个根接口。

TDD 进展顺利,但在使用深度接口时,模拟变得有点复杂,因为我必须模拟整个接口树。不过没什么大不了的,我只是维护了一个构建模拟的辅助函数。这确实让我怀疑我是否使用了正确的方法。

无论如何,在树的中间,我现在突然碰到了一个密封的混凝土类型,没有公共构造函数,所以我没有办法嘲笑它。这导致我的测试失败,因为模拟 API 总是为此成员返回 null。

我能看到的唯一方法是为这种类型创建自己的接口,并在我的外观上有一个虚拟方法来访问它。但是,这对我来说似乎很乱,因为我无法通过这种方法强制访问该类型,而且很容易忘记。例如,很自然地使用:

代替:

忘记这一点会导致测试失败。

我错过了一些基本的东西吗?正如我所说,我对单元测试很陌生。

附言。我正在使用起订量。

0 投票
5 回答
4885 浏览

c# - 实现接口后密封接口

我正在做一个小项目,我遇到了这个问题。

项目输出是一个包含接口的库。如果可能的话,我想实现该接口并像这样密封其中的功能:

这个想法是让每个人都可以使用这个接口,并有一些专门的类来实现它。例外是我想确保如果有人创建了一个 A 类型的专门类,他/她将无法更改该方法的行为。

问题是您不能将“覆盖”关键字放在那里,因为该方法未在接口中声明为“虚拟”。而且您不能在界面中将其声明为“虚拟”,因为它是不允许的。而且您不能删除“覆盖”关键字,因为“密封”需要它。

欢迎任何解决方法或头脑风暴的想法,但如果有人能想出一个包含界面的解决方案,我会很高兴学习它!

谢谢!

编辑:忘记这个问题!就像 Ani 所说,我忘记了 C# 中的默认方法是密封的。似乎偶尔回到基础总是好的......

0 投票
5 回答
4051 浏览

c# - 抽象类的密封属性

请考虑以下设计:

有什么方法可以密封基类的Title属性,以防止该属性在派生类(例如和类)中被覆盖?BaseBookBookSuperBook

0 投票
3 回答
406 浏览

list - F#:无法从 F# 交互中的 List<'T> 继承


我的理解是 List<'T> 实际上没有密封。不?

此外,这似乎在 F# 交互之外工作得很好。确切的代码在我的 F# 项目中,编译器会毫无怨言地处理它。我在几个 C# 项目中也发生了同样的事情。代码在每种情况下都按预期工作。

通常,我只是使用静态方法扩展 List<'T> (以“F# 方式”进行),但隐藏 List.Add 也应该可以正常工作。

0 投票
5 回答
3946 浏览

c# - 如何禁止在 C# 中覆盖类方法/属性?

我相信我希望类的某些方法和属性是不可覆盖的,并在所有派生类中使用基类的实现。如何做到这一点?密封关键字似乎不起作用,并说“方法不能被密封,因为它不是覆盖”。

0 投票
2 回答
1018 浏览

c# - 如何对自动生成的 C# 部分类中的现有方法进行调整?

我正在使用 Visual Studio Coded UI 测试,并希望对生成的代码进行持续调整。

UIMap.cs代码在and中作为部分类生成UIMap.Designer.cs,因此我知道一种解决方案是创建一个名称略有不同的方法,例如myMethod_persistinUIMap.cs并使用 this 而不是myMethodin UIMap.Designer.cs,每次重新生成源时都会覆盖该方法。

然而,这似乎很混乱,所以我更喜欢的是myMethodUIMap.cs. 这样界面就不会很复杂,有很多口香糖,而且我不必记住将myMethod调用代码中的每个实例更改为myMethod_persist

不幸的是,当谈到 C# 时,我有点菜鸟,甚至不知道这是否可能。

基本上我想要的是这样的:

但我知道sealed 和override 关键字通常用于派生子类类,而不是部分类。这可能吗?如果不是,那么我最好的选择是什么?

0 投票
3 回答
1858 浏览

c++11 - 是密封命令 c++ 0x 还是只有微软拥有它

sealed命令是在 c++ 0x 中还是只有 MS 使用它?