当前位置:  开发笔记 > 编程语言 > 正文

如何在C#中"覆盖"开源项目的内部类

如何解决《如何在C#中"覆盖"开源项目的内部类》经验,为你挑选了0个好方法。

我正在尝试修改从开源库中获取的类.虽然我在项目中引用了库,但原始类包含对标记的库部分的引用internal.这导致我的代码中出现构建错误.

我读到了这个答案:你如何"覆盖"C#中的内部类?.请注意,internal当一个人无法访问源代码时,它表示想要访问一个类时运气不好.然而,对我来说情况并非如此.

我可以解决这个问题,但我想知道是否有一个很好的方法来做到这一点.在我看来,我有两个选择.我可以修改类的源代码internal,使它不是internal(坏),或者我可以将类本身直接导入到我的项目中(更糟).如果我导入该类,还有其他参考问题,我可能必须导入整个库来修复依赖项.

请注意,我知道我可以将我的更改添加到开源库,然后将其构建为我的代码中引用的新库.我现在不想这样做,因为我希望能够在调试器中进入我的方法.一旦我调试了我的方法并保证其实用性,我将把它作为我的开源项目版本的一部分.

我是c#的新手,这是我第一次参与大型开源项目,所以我想就如何处理这个问题提出一些建议.

更新:

以下是我想要修改的库源代码的链接:https://github.com/accord-net/framework/blob/development/Sources/Accord.Math/Optimization/Unconstrained/Least%20Squares/ LevenbergMarquardt.cs

要修改此代码,我在visual studio中打开了源代码,并尝试构建当前存在的版本.在第304行,出现以下代码:
int[] block = Vector.Range(s * blockSize, s * blockSize + B);.

当我在visual studio中有这个文件时,它会给我一个错误,说Vector由于它的保护级别而无法访问.当我在intellisense窗口中查看该代码的定义时,它会显示Vector标记为internal.

如果我尝试将源代码Vector放入我的项目中,则会发布更多相同类型的代码,因为Vector使用其他internal类.

推荐阅读
ERIK又
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有