c# - 如何在 C# 中创建选择加入方法继承?
问题描述
我想在 C# 中创建一个代码结构,让我继承一个类或接口,但让你“选择加入”继承类中的方法。
我想要的一个完美例子是 Unity 的 MonoBehaviour 是如何工作的。您只需为您需要的内容编写代码,这很简单 - 无需编写基类中的方法,您只需将其留空。
使用 Unity 的示例:
public class MyUpdater : MonoBehaviour
{
int num = 0;
void Update()
{
num++;
}
}
MonoBehaviour 类还包含其他可选方法(Start、OnDestroy 等),但编译器不会在意。
显然,Unity 在 MonoBehaviour 中发生了很多事情,我不打算重新创建它。(事实上我是在团结中工作)
我喜欢代码结构,并且我也作为自由职业者与可能不擅长编码的人一起工作。不需要使用 overrides 或 exc 可以更容易地理解和扩展我创建的内容。
感谢您花时间阅读!:)
编辑:
澄清一下,我对 Unity 或编码并不陌生,但我是自学成才的。我主要从事创建后端系统的工作。
正如下面有人建议的那样,我在询问如何为不从 MonoBehaviour 扩展的类复制 Unity 的“魔术”方法。
解决方案
回答 3,如果出于某种原因您对 Unity 的“神奇”功能在 Unity 中工作的机制感兴趣(在当前版本中 - 它发生了很大变化)
请务必在 Google 上对此进行大量讨论,例如:
这是非常无趣的,不会影响任何事情。
您可能会喜欢这个类似的冗长 QA,它触及了该问题的核心:
在 Unity 中,Unity 如何神奇地调用所有“接口”?
您可能只是在 C#中寻找New
andOverride
关键字。
(每种语言的继承语法/范例略有不同。)
Override
扩展基类中的函数,并将其New
隐藏。这是你的选择 :)
它被广泛解释,例如
(如果您从字面上询问 Unity 的“神奇”功能(Update()
等)的不寻常范式,那么这是不可能的,而且您也不想这样做。)
你要问的还有一个可能的事情:
新的 Unity 开发人员没有意识到这一点是很常见的:
正如您所说,Unity 为您提供MonoBehavior
.
新的 Unity 程序员通常没有意识到您通常使用 MonoBehavior
class Weapon: MonoBehavior {
... explosions
... sound effects
... etc
}
然后您和其他程序员基于该类编写类:
class Slingshot: Weapon {
class Peashooter: Weapon {
class SplatRoller: Weapon {
请注意,这些新类确实是 MonoBehaviors - 您可以、做并且应该在其中正常使用“Awake”、“Update”等!
我想这可能是你要问的。
推荐阅读
- python - 将列表合并到字典列表中
- php - 尝试使用 Kubernetes 访问 Wordpress 服务时出现 EOF 教程示例:使用持久卷部署 WordPress 和 MySQL
- python - 我如何才能找到是否有人在 python 中重复按键?
- python - Django QuerySet .count() 为 0 且 .exists() 为 false,即使 QuerySet 中有一个对象(Django Rest Framework)
- javascript - JSON数据不能存储在变量中
- python - 在 Python 中使用 pypdktk 合并 FDF 和 PDF 文件
- python - 如何使用 python/pandas 根据行和列中的公共前缀查找/过滤/组合?
- firebase - 从命令行设置 Firebase 函数安全级别
- javascript - Typescript 类型的函数数组,每个函数都转换数据
- html - 如何查看大的 h5p 文件