是否可以覆盖第三方库中的方法?

时间:2017-06-06 14:47:41

标签: c# unity3d methods reflection

我在Unity中使用第三方库Google VR。 在该lib的一个C#-source文件中,我向类LibClass添加一个静态方法调用,如下所示:

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

但每次更新库时,对MyOwnClass.staticMethod()的调用都会丢失,我必须手动重新添加它。 我不能子类化LibClass,因为库总是调用LibClass而不是LibSubClass。 有没有办法以编程方式将对staticMethod()的调用添加到LibClass?或者其他任何方式?

编辑: 我被要求更好地描述问题:

OnPreRender是Unity的MonoBehavi类的一种方法。 在渲染摄像机图像之前调用此方法。 我的问题是我需要谷歌VR,它为每只眼睛处理2个独立的摄像头,以绘制一个与另一个略有不同的摄像头图像。 由于为每个摄像头调用了OnPreRender,我使用它作为在我自己的类中调用静态方法的入口点(静态只是因为我不必在Google VRs类中实例化我自己的类)。

现在可以正常使用好几个月,但Google VR lib会不断更新,每次我这样做时,对我自己的类的方法调用都会丢失。

所以我想知道,当你被图书馆调用时,可以通过编程方式说“你在那里,OnPreRender()”,跳过这里并做一些额外的工作。 这有意义吗?

1 个答案:

答案 0 :(得分:0)

您可以尝试使用扩展方法。请记住,这项工作仅适用于对象函数的静态调用。

你可以找到更多: https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/extension-methods