簡體   English   中英

是否可以覆蓋第三方庫中的方法?

[英]Is it possible to override a method in a 3rd party library?

我在Unity中使用第三方庫Google VR。 在該庫的一個C#源文件中,我向類LibClass添加一個靜態方法調用,如下所示:

void onPrerender() {
    MyOwnClass.staticMethod();
    (continue with original method call...)
}

但是,每次我更新庫時,對MyOwnClass.staticMethod()的調用都會丟失,我必須手動重新添加它。 我不能繼承LibClass,因為該庫將始終調用LibClass而不是LibSubClass。 有沒有辦法以編程方式將對staticMethod()的調用添加到LibClass? 還是其他方式?

編輯:我被要求更好地描述問題:

OnPreRender是Unity的MonoBehaviour類的方法。 在渲染攝像機圖像之前調用此方法。 我的問題是我需要Google VR,該VR為每只眼睛處理2個獨立的攝像頭,以繪制其中一個攝像頭圖像與另一個攝像頭圖像稍有不同。 由於每個攝像機都調用OnPreRender,因此我將其用作在我自己的類中調用靜態方法的入口(僅因為這樣我不必在Google VRs類中實例化自己的類,所以它才是靜態方法)。

現在可以正常工作數月,但是Google VR庫會不斷更新,每次執行此操作時,對我自己的類的方法調用都會丟失。

因此,我想知道是否有可能以編程方式說“在那兒,外部類中的OnPreRender(),當庫調用您時,跳過這里並做一些額外的工作。” 那有意義嗎?

您可以嘗試使用擴展方法。 切記,此功能僅適用於對對象函數的靜態調用。

您可以找到更多信息: https : //docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/classes-and-structs/extension-methods

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM