c# - C#从基类调用重写的方法
问题描述
我正在覆盖一些现有的代码,但尽量不要触及现有的类。
我有一个基类
public class A {
public virtual void Func() {
do something...
}
}
我有几个其他类正在通过调用 A.Func() 来访问它
我正在写一个扩展类
public class B : A {
public override void Func() {
do something else...
}
}
在不触及基类和那些调用基类的类的情况下,有没有办法将方法 Func() 指向扩展类?
我的意思是当有一个类调用 A.Func() 时,它会执行 B.Func() 而不是 A.Func() 但不会触及该类或 A 类的代码
一个例子
public class C {
void SomeOutsideFunc()
{
var a = new A();
a.Func(); //in here, is it possible to execute the extended B class's Func()?
}
}
在上面的示例中,A 类和 C 类禁止任何修改,B 类是 I 编码的扩展类。现在,我必须对 C 类进行另一个覆盖以使事情正常工作我的问题是有很多 C 类型的类(我无法进行任何更改)
tks
解决方案
您可以创建指向子类的基类对象,假设 B.
一个 objA=新 B(); objA.Func();
这将调用派生类的函数。
推荐阅读
- android - 如何使用 Kotlin 验证两个 arrayList 中的相等性
- c# - 当Window的大小改变时如何知道它是增加还是减少
- xml - Sabre 取消行程段错误 (OTA_CancelRQ)
- php - PHP opcache 预加载未在 Apache 上加载
- node.js - 使用 VISA API 生成 VISA 卡号
- git - 在 Gitlab 中推送存储库被拒绝错误
- javascript - ReactJS:第一个 useEffect 在第二个被触发之前不会更新状态
- python - 多索引数据帧上的 Pandas 布尔值枢轴
- angular - 使用 MatSelect 和 rxjs fromEvent 事件没有被听到?(选择更改)
- python - 如何在 NLTK 中获取 xml 格式的标记实体