我正在尝试恢复内存,但无法通过 Google 找到答案。
public class BaseClass
{
public virtual void DoSomething()
{
Trace.Write("base class");
}
}
public class DerivedClass : BaseClass
{
public override void DoSomething()
{
Trace.Write("derived class");
}
}
如果我创建一个派生类的实例,我如何将它转换为它的基类,以便在调用 DoSomething() 时,它仅使用基类的方法?
动态转换仍然调用派生类的重写方法:
DerivedClass dc = new DerivedClass();
dc.DoSomething();
(dc as BaseClass).DoSomething();
输出:“派生类”
最佳答案
虽然这听起来很不合理,但确实有效
DerivedClass B = new DerivedClass();
BaseClass bc = JsonConvert.DeserializeObject<BaseClass>(JsonConvert.SerializeObject(B));
关于c# - 将派生类转换为基类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8329470/