我正在尝试修改从开源库中获取的类.虽然我在项目中引用了库,但原始类包含对标记的库部分的引用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
类.