覆盖另一个程序集中的内部抽象方法

Phi*_*ier 8 .net c# overriding visibility

我目前正在使用另一个.net库的ac#项目.该库(除其他外)将序列解析为树.所有项都是从抽象类继承的某种类型Sequence.我需要稍微改变行为并将Sequence自己子类化(让我们称之为MySequence).树创建后,我可以用我自己的类的对象替换一些树节点.

现在,发布了新版本的库,并Copy引入了具有以下签名的函数:

internal abstract Sequence Copy();
Run Code Online (Sandbox Code Playgroud)

我试图将我的代码用于新版本并覆盖它,但无论我做什么,我都会遇到两个错误:

MySequence没有实现继承的抽象成员' Sequence.Copy()'
和:
MySequence.Copy()':找不到合适的方法来覆盖

这是有道理的,因为它是抽象的( - >它必须被覆盖)和内部的( - >它不能被覆盖,因为来自程序集外部的隐藏可见性)

所以,问题是,我明白为什么会这样,但不知道该怎么办.对我的项目来说,子类是至关重要的Sequence.

而我也不明白的是,为什么internal abstract首先允许使用modfier,因为它基本上允许从程序集外部对整个类进行任何子类化!

有什么方法可以解决这个问题吗?通过反思或什么?

提前致谢!

Cod*_*ked 4

基本上,如果不改变库,你就运气不好。可能有一个 Sequence 的子类确实实现了 Copy,您可以在新版本中从中派生。但库的其他部分可能需要 Copy 方法来创建克隆。