当前位置: 首页 > 编程语言 > C#

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

时间:2023-04-11 02:47:12 C#

C#学习教程:重写另一个程序集中的内部抽象方法该库(除其他外)将序列解析为树。所有项目都是从抽象类Sequence继承的某种类型。我需要稍微改变一下行为并自己对序列进行子排序(我们称它为MySequence)。创建树后,我可以用我自己的类的对象替换一些树节点。现在,发布了新版本的库,并引入了具有以下签名的Copy函数:internalabstractSequenceCopy();我正在尝试将我的代码用于新版本并覆盖它,但无论我做什么,我都会遇到两个错误:MySequence没有为抽象成员“Sequence.Copy()”实现继承和:MySequence.Copy()':没有找到合适的方法来覆盖这是有意义的,因为它是抽象的(->必须被覆盖)和内部的(->由于程序集外部的隐藏可见性,它不能被覆盖)所以,问题是,我明白为什么这正在发生,但不是该做什么。子类化Sequence对我的项目至关重要。而且我也不明白的是为什么首先允许内部抽象修饰符,因为它基本上允许从程序集外部对整个类进行任何子类化!有什么办法可以解决这个问题吗?通过反思还是什么?提前致谢!基本上,如果您不更改库,那您就不走运了。可能有一个Sequence的子类确实实现了Copy,你可以在新版本中派生它。但很可能库的其他部分需要Copy方法来创建克隆。这个修饰符意味着该类只能在定义它的程序集中继承。没有办法解决这个问题。如果一个库的类型的成员带有修饰符internalabstract,我得出的结论是,该库的开发人员不希望任何人从该类型派生出他们自己的类型。你无法解决这个问题。你可以考虑一下这是不是故意的。你应该问出版社。这可能是一个错误,在这种情况下,发布者可能会发布修复程序。如果是故意这样做,你应该想出一个替代解决方案,而不是那种类型的。编辑:也许他们打算只从已经实现成员的同一程序集中的派生类型派生。以上就是C#学习教程:涵盖了另一个程序集中内部抽象方法共有的所有内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处: