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

时间:2015-12-27 23:02:34

标签: c#

我正在处理一个有抽象类的代码,例如:

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;}
         ...
    }

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

2 个答案:

答案 0 :(得分:4)

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

var concreteObject = myObj as classOne;

或者,如果你不知道你将拥有什么样的对象类型,你可以测试它然后进行投射:

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

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

答案 1 :(得分:1)

如果您在运行时知道某个实例属于特定类型,但您无法向编译器证明,则可以将其转换为:

(SomeType)instance