繁体   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