c# - 将派生类转换为基类

标签 c# polymorphism

我正在尝试恢复内存,但无法通过 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/

相关文章:

c# - 如何从 ScaleOut StateServer (SOSS) 获取可用的 NamedCache 对象列表?

C#数据表主键问题

c# - 如何使用 ffmpeg 调整图像大小

c# - C# 中的列表转换

c++ - 如何形成对非最终类的 `final` 引用?

c# - 为什么 json 序列化器不符合多态性?

c# - Activator.CreateInstance 在 1 个解决方案中抛出 MissingMethodException 而不是另一个

c++ - 物理引擎的循环模板类型名依赖

c# - 根据子类指定基类抽象方法的返回类型

c# - 传递到方法的参数的值属性