如何从抽象类访问继承类的属性

本文关键字:属性 继承 访问 抽象类 | 更新日期: 2023-09-27 18:28:15

我使用的代码中有一个抽象类,例如:

public abstract class AbstractClass
{
   ...
}

并且存在从AbstractClass继承的类。根据继承类之一的用户输入创建一个对象。每个继承的类都有自己的属性:

class classOne : AbstractClass
    {
         ...
         public int A { get; set;}
         public int B { get; set;}
         public int C { get; set;}
         ...
    }

class classTwo : AbstractClass
    {
         ...
         public int D { get; set;}
         public int E { get; set;}
         ...
    }

假设我想在代码中使用函数,并且我知道将返回哪种对象类型。由于程序是以只有在程序运行时才能确定输出类的方式编写的,因此我如何修改输出对象的属性?

如何从抽象类访问继承类的属性

如果你知道你会有什么具体的类型,你总是可以投射你的对象:

var concreteObject = myObj as classOne;

或者,如果你不知道你会有什么对象类型,你可以测试它,然后投射:

if (myObj is classOne) {
    // Cast to classOne and use
} else if (myObj is classTwo) {
    // Cast to classTwo and use
}

希望这有助于回答您的问题!

如果在运行时知道实例将是特定类型的,但无法向编译器证明,则可以强制转换:

(SomeType)instance