C#:将超类转换为子类



我有一个类(SuperClass(被使用。出于自己的目的,我设计了一个子类,它为我添加了额外的信息。

class SuperClass{
}
class SubClass: SuperClass{
}

现在我的问题是,在运行时我想将超类的实例转换为子类的实例。对它进行一些操作,然后返回超类。所以我的问题是,如何才能真正将 SueprClass 的实例转换为 SubClass 的实例?

SubClass newItem = superClass as SubClass;

如果您正在使用的实例被初始化为 SuperClass ,则无法神奇地将其转换为SubClass的实例 - 这会将整个类型系统抛出窗口。

但是,您可以添加一种将SuperClass转换为SubClass的方法,但您必须为此编写代码。

一种方法是向SubClass添加一个构造函数,该构造函数接收SuperClass的实例以及SubClass所需的任何其他信息(如果它不需要其他信息,也许您最好使用扩展方法而不是继承(。
另一种方法是编写显式转换运算符。

最新更新