- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
在 C++ 中,我经常需要 NVI使我的 API 保持一致。不过,我认为它在 C# 中的使用并不多。我想知道这是否是因为 C# 作为一种语言提供了不需要 NVI 的功能? (不过,在需要的地方,我仍然在 C# 中使用 NVI。)
最佳答案
C# 通过取消多重继承给 NVI 带来了问题。虽然我确实认为多重继承弊大于利,但(在大多数情况下)对于 NVI 来说是必要的。想到的最简单的事情是:C# 中的一个类不能实现多个 NVI。一旦发现 C#/NVI 串联的这一令人不快的方面,放弃 NVI 就会比放弃 C# 容易得多。
顺便说一下方面。这是一个非常有趣的概念,它的目标与 NVI 的目标完全相同,只是它试图查看问题的“真正本质”并“适本地”解决它,可以这么说。 Take a look .
就 .NET Framework 而言,有一种机制可以做到这一点:可以说,将“正交”代码注入(inject)手头的主要逻辑。我说的是 MarshalByRef/TransparentProxy 业务,我相信您已经听说过。不过,它确实会严重影响性能,所以运气不好。
还有许多尝试通过其他技术实现相同的概念,从构建外观到上面提到的肮脏业务再到 MSIL 的后处理。
后一种方法恰好最吸引您,因为它可以变得透明(通过将需要的步骤合并到一个人的构建例程中),它不会影响性能(比实际执行“正交”绝对必要的更多"代码)并且它不涉及某种“黑客攻击”或逆向工程,因为 MSIL 是开放的并且有据可查。
Here人们可以找到更详细讨论的这些要点,以及更多信息和实际工具的链接。出于同样的目的使用谷歌也是可以接受的。 :-)
祝你好运。
关于c# - 非虚拟接口(interface) (NVI) 惯用法在 C# 中是否与在 C++ 中一样有用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2340487/
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 6年前关闭。 Improve this qu
我有实体: @Entity @Table(name = "CARDS") public class Card { @ManyToOne @JoinColumn(name = "PERSON_I
我正在尝试计算二维多边形的表面法线。我正在使用 OpenGL wiki 中的 Newell 方法来计算表面法线。 https://www.opengl.org/wiki/Calculating_a_S
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 7 年前。 Improve
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 9 年前。 Improve this
我这里有以下 XML: Visa, Mastercard, , , , 0, Discover, American Express siteonly, Buyer Pay
即将发生的 Google 政策变更迫使我们实现一个对话框,以通知欧盟用户有关 Cookie/设备标识符用于广告和分析的情况。我只想向欧盟用户显示此对话框。我不想使用额外的权限(例如 android.p
本文分享自华为云社区《华为大咖说 | 企业应用AI大模型的“道、法、术” ——道:认知篇》,作者:华为云PaaS服务小智。 本期核心观点 上车:AGI是未来5~10年内,每个人都无法回避的技
我有一个与酒精相关的网站,需要先验证年龄,然后才能让他们进入该网站。我使用 HttpModule 来执行此操作,该模块检查 cookie,如果未设置,我会将它们重定向到验证页面。我验证他们的年龄并存储
在欧盟,我们有一项法律,要求网页请求存储 cookie 的许可。我们大多数人都了解 cookie 并同意它们,但仍然被迫在任何地方明确接受它们。所以我计划编写这个附加组件(ff & chrome),它
以下在 C 和/或 C++ 中是否合法? void fn(); inline void fn() { /*Do something here*/ } 让我担心的是,第一个声明看起来暗示函数将被定义
我是一名优秀的程序员,十分优秀!