C# - 加载继承的类

时间:2012-02-20 17:48:03

标签: c#

我有一个名为FieldDesc的课程。

public class FieldDesc {
    public FieldDesc() {
    }
}

我还有另一个继承自FieldDesc的{​​{1}}。

StandardHoursByCommunitySvcType

在我的掌控中,我有 -

public class StandardHoursByCommunitySvcType: FieldDesc {
    public StandardHoursByCommunitySvcType() {
    }
}

我需要做些什么才能让FieldDesc aTable; aTable = new FieldDesc(); String TableName = "StandardHoursByCommunitySvcType"; 知道它是aTable类型的对象?

3 个答案:

答案 0 :(得分:2)

你的问题不清楚。您是否尝试将aTable声明为StandardHoursByCommunitySvcType或尝试确定它是否已声明为一个?

如果你想宣布:

FieldDesc aTable;
aTable = new StandardHoursByCommunitySvcType();

只要StandardHoursByCommunitySvcType继承自FieldDesc

,它就会起作用

如果您要确定类型:

if(aTable is StandardHoursByCommunitySvcType)
{
    //Do something
}

答案 1 :(得分:0)

您可以使用is运算符来查找

if(someObject is StandardHoursByCommunitySvcType )
    {
       //it means is is object of StandardHoursByCommunitySvcType  type
    }

答案 2 :(得分:0)

如果你有两个班级

public class FieldDesc
{
    public FieldDesc()
    {
    }

    public void A()
    {
    }

    public virtual void V()
    {
        Console.WriteLine("V from FieldDesc");
    }
}

public class StandardHoursByCommunitySvcType : FieldDesc
{
    public StandardHoursByCommunitySvcType()
    {
    }

    public void B()
    {
    }

    public overrides void V()
    {
        Console.WriteLine("V from StandardHoursByCommunitySvcType");
    }
}

你可以这样做

FieldDesc fd = new StandardHoursByCommunitySvcType();
StandardHoursByCommunitySvcType svc = new StandardHoursByCommunitySvcType();

fd.A(); // OK
fd.B(); // Fails (does not compile)
((StandardHoursByCommunitySvcType)fd).B(); // OK
fd.V(); // OK, prints "V from StandardHoursByCommunitySvcType"

svc.A(); // OK
svc.B(); // OK
svc.V(); // OK, prints "V from StandardHoursByCommunitySvcType"

派生类与基类兼容;但是,通过键入作为基类的变量访问,您只能看到基类的成员。