【发布时间】:2015-11-23 15:50:10
【问题描述】:
您好,我正在使用 unity 3D 与 lidgren 建立自己的网络。
当我为我制作自定义 gui 时,我也遇到过这个问题,但不是什么大问题。对其他开发人员的一个小警告没有多大帮助。
但这次我需要更好的解决方案。
假设我有一个 BaseClass 和一个 Child:
public class BaseClass : MonoBehavior {
void Update() {
//my connectionhandler
}
}
public class Child : BaseClass {
// forbid it to define Update
void Update() {
}
// or let him use it but without writing base.Update() it should still use BaseClass Update()
}
正如您在这两个类中看到的,我有 void Update()。这个问题是如果孩子也使用 void Update ,那么基本的 Update 就不会再被调用了。是可以避免的。如果 base 已经定义了它,示例限制对更新方法的访问? 或者可以让孩子使用 void Update() 的定义,但基类也应该能够使用他自己的 Update() (后台工作:P)
其他开发人员不应每次都使用 base.Update()。我相信他们会忘记很多次:)
【问题讨论】:
-
你会添加密封的肉类
-
您是否考虑过将事件添加到 Update 方法中?允许消费者添加 BeforeUpdate 和 AfterUpdate 事件处理程序以运行自定义代码,但更新本身将始终运行?
-
不,如果我愿意,我会让他们使用 base.Update() :)。问题在于团结本身。我没有注意到 Update() 作为自定义函数工作。我无法阻止它。我现在正在考虑线程。但它不是很安全
-
您可以通过将“将警告视为错误”设置为“特定警告”为“0108”来使 CS0108 警告成为错误。它仍然不是一个完美的解决方案,因为错误会告诉开发人员在方法中添加“新”。这至少意味着他们不能再忽视警告。
标签: c# class inheritance restriction