![](/img/trans.png)
[英]DataContractSerializer is an opt-in serializer. How to make it Opt-Out?
[英]How can I create opt-in method inheritance in C#?
我想在C#中創建一個代碼結構,讓我繼承一個類或接口,但是讓你“繼承”繼承類的方法。
我想要的一個完美的例子是Unity的MonoBehaviour如何運作。 您只需編寫所需內容的代碼,這很簡單 - 無需從基類中編寫只留空的方法。
使用Unity的示例:
public class MyUpdater : MonoBehaviour
{
int num = 0;
void Update()
{
num++;
}
}
MonoBehaviour類還包含其他選擇加入方法(Start,OnDestroy,exc。),但編譯器不關心。
顯然Unity在MonoBehaviour中有很多內容,我不打算重新創建它。 (事實上我在團結中工作)
我喜歡代碼結構,而且我也是一名自由職業者,可能與那些編碼效果不佳的人一起工作。 不需要使用覆蓋或刪除使得更容易理解和擴展我創建的內容。
感謝您抽出寶貴時間閱讀! :)
編輯:
對於一些澄清,我對Unity或編碼並不陌生,但我是自學成才。 我主要負責創建后端系統。
正如下面有人建議的那樣,我問的是如何為不從MonoBehaviour擴展的類復制Unity的“魔術”方法。
答案3,如果由於某種原因你對Unity的“神奇”功能在Unity中運行的機制感興趣(在當前版本中 - 它會發生很大變化)
一定要谷歌這個廣泛的討論,例如:
這是非常無趣的,不會影響任何事情。
你可能會喜歡這個類似冗長的QA,這個QA觸及了這個問題的核心:
您可能只是在c#中查找 New
和Override
關鍵字。
(每種語言的繼承語法/范例都略有不同。)
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”等通常在其中!
我想這可能就是你要問的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.