问题标签 [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.
c# - 自定义媒体元素
我目前MediaElements
正在创建的应用程序中使用一些。我正在动态创建它们并将它们添加到包装面板中。
问题是我需要能够为它们添加一个密钥,以便我可以返回并找到一个特定的。
我打算继承MediaElement
并添加密钥作为成员。不幸的是我不能这样做,因为它是一个密封的类。
所以我尝试创建一个包含 aMediaElement
和密钥的类,但我无法将它添加到 GUI,因为它不是UIElement
.
无论如何我可以做到这一点吗?我只需要能够添加MediaElements
并且他们能够稍后返回并找到它们,以便我可以修改或删除它们。
scala - 在类型和唯一值之间建立已知的 1:1 关系
鉴于我有一种使用密封特征和表示值的案例对象的枚举,是否可以强制执行一种机制来检索给定类型的单个唯一值,而不需要隐式参数?
隐含这将是
是否可以删除隐式参数进行测试?也就是说,要确保 V 是已定义的 Enum 子类型(显然, test[Enum] 应该失败)。戈尔迪安结是:
?
.net - 使用密封的具体类对第三方 API 进行单元测试
刚刚开始 TDD,一切都很顺利,直到我碰到这堵砖墙。
我正在围绕第三方 API 编写外观。API 非常好,因为一切都通过接口访问,所以在测试我的外观时很容易模拟。
整个 API 是通过根接口访问的,您可以从中深入了解接口的深层层次结构。在标准 IoC 实践中,我的外观在其构造函数中采用了这个根接口。
TDD 进展顺利,但在使用深度接口时,模拟变得有点复杂,因为我必须模拟整个接口树。不过没什么大不了的,我只是维护了一个构建模拟的辅助函数。这确实让我怀疑我是否使用了正确的方法。
无论如何,在树的中间,我现在突然碰到了一个密封的混凝土类型,没有公共构造函数,所以我没有办法嘲笑它。这导致我的测试失败,因为模拟 API 总是为此成员返回 null。
我能看到的唯一方法是为这种类型创建自己的接口,并在我的外观上有一个虚拟方法来访问它。但是,这对我来说似乎很乱,因为我无法通过这种方法强制访问该类型,而且很容易忘记。例如,很自然地使用:
代替:
忘记这一点会导致测试失败。
我错过了一些基本的东西吗?正如我所说,我对单元测试很陌生。
附言。我正在使用起订量。
c# - 实现接口后密封接口
我正在做一个小项目,我遇到了这个问题。
项目输出是一个包含接口的库。如果可能的话,我想实现该接口并像这样密封其中的功能:
这个想法是让每个人都可以使用这个接口,并有一些专门的类来实现它。例外是我想确保如果有人创建了一个 A 类型的专门类,他/她将无法更改该方法的行为。
问题是您不能将“覆盖”关键字放在那里,因为该方法未在接口中声明为“虚拟”。而且您不能在界面中将其声明为“虚拟”,因为它是不允许的。而且您不能删除“覆盖”关键字,因为“密封”需要它。
欢迎任何解决方法或头脑风暴的想法,但如果有人能想出一个包含界面的解决方案,我会很高兴学习它!
谢谢!
编辑:忘记这个问题!就像 Ani 所说,我忘记了 C# 中的默认方法是密封的。似乎偶尔回到基础总是好的......
c# - 抽象类的密封属性
请考虑以下设计:
有什么方法可以密封基类的Title
属性,以防止该属性在派生类(例如和类)中被覆盖?BaseBook
Book
SuperBook
list - F#:无法从 F# 交互中的 List<'T> 继承
我的理解是 List<'T> 实际上没有密封。不?
此外,这似乎在 F# 交互之外工作得很好。确切的代码在我的 F# 项目中,编译器会毫无怨言地处理它。我在几个 C# 项目中也发生了同样的事情。代码在每种情况下都按预期工作。
通常,我只是使用静态方法扩展 List<'T> (以“F# 方式”进行),但隐藏 List.Add 也应该可以正常工作。
c# - 如何禁止在 C# 中覆盖类方法/属性?
我相信我希望类的某些方法和属性是不可覆盖的,并在所有派生类中使用基类的实现。如何做到这一点?密封关键字似乎不起作用,并说“方法不能被密封,因为它不是覆盖”。
c# - 如何对自动生成的 C# 部分类中的现有方法进行调整?
我正在使用 Visual Studio Coded UI 测试,并希望对生成的代码进行持续调整。
UIMap.cs
代码在and中作为部分类生成UIMap.Designer.cs
,因此我知道一种解决方案是创建一个名称略有不同的方法,例如myMethod_persist
inUIMap.cs
并使用 this 而不是myMethod
in UIMap.Designer.cs
,每次重新生成源时都会覆盖该方法。
然而,这似乎很混乱,所以我更喜欢的是myMethod
在UIMap.cs
. 这样界面就不会很复杂,有很多口香糖,而且我不必记住将myMethod
调用代码中的每个实例更改为myMethod_persist
不幸的是,当谈到 C# 时,我有点菜鸟,甚至不知道这是否可能。
基本上我想要的是这样的:
但我知道sealed 和override 关键字通常用于派生子类类,而不是部分类。这可能吗?如果不是,那么我最好的选择是什么?
c++11 - 是密封命令 c++ 0x 还是只有微软拥有它
该sealed
命令是在 c++ 0x 中还是只有 MS 使用它?