C#-加载继承的类
我有一个叫做C#-加载继承的类,c#,C#,我有一个叫做FieldDesc的类 public class FieldDesc { public FieldDesc() { } } 我还有一个从FieldDesc继承的类,名为StandardHoursByCommunitySvcType public class StandardHoursByCommunitySvcType: FieldDesc { public StandardHoursByCommunitySvcType() { } } 在我的控制
FieldDesc
的类
public class FieldDesc {
public FieldDesc() {
}
}
我还有一个从FieldDesc
继承的类,名为StandardHoursByCommunitySvcType
public class StandardHoursByCommunitySvcType: FieldDesc {
public StandardHoursByCommunitySvcType() {
}
}
在我的控制下,我有-
FieldDesc aTable;
aTable = new FieldDesc();
String TableName = "StandardHoursByCommunitySvcType";
要使
aTable
知道它是类型为StandardHoursByCommunitySvcType
的对象,我必须做些什么?您可以使用is运算符来找出这一点
if(someObject is StandardHoursByCommunitySvcType )
{
//it means is is object of StandardHoursByCommunitySvcType type
}
你的问题不清楚。您正在尝试将aTable声明为StandardHoursByCommunitySvcType,还是尝试确定它是否已声明为一个 如果您试图声明:
FieldDesc aTable;
aTable = new StandardHoursByCommunitySvcType();
只要StandardHoursByCommunitySvcType继承自FieldDesc,它就可以工作
如果您试图确定类型:
if(aTable is StandardHoursByCommunitySvcType)
{
//Do something
}
如果你有两门课
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"
派生类与基类的赋值兼容;但是,通过类型为基类的变量访问时,您只能看到基类的成员。它不是
StandardHoursByCommunitySvcType
的对象。您将其声明为new FieldDesc()
您必须分配aTable=new standard hoursbycommunitySvctype()
。否则,无法将其转换为标准的HoursbyCommunitySVctype在代码示例中,aTable
将始终是FieldDesc
类型,因为它是这样构造的。在这里,您试图实现什么目标?Bernard-我正在尝试创建一个基类,该基类包含我需要的功能,其中子类特定于特定的表。这样,当我实例化一个FieldDesc时,我不想告诉它加载子类,而是加载通过子类定义的基类定义。有意义吗?我很欣赏所有的输入,但是如果我想声明一个特定于子类的对象,我可以实例化这个子类。我试图从控件中抽象出该规范。有没有一种方法可以使用TableName来指定要使用哪个子类?