假设我有一个父类A和一些子类B1,... Bn。 我想在某个时间点,有一个类型A的对象Bx,可以说:这是一个Bx类。
我的第一个猜测是在类A中添加一个定义每个子类类型的枚举属性,然后在构造子对象时存储这个子类类型:
public enum typeOfChild { B1, B..., Bn };
public class A {
public typeOfChild type;
}
public class B1 : A {
public B1()
{
type = typeOfChild.B1;
}
}
// So I can retrieve it later:
B1 Foo = new B1();
// What will happen is that I don't know the type of the child:
A FooA = Foo;
// And now I would like to retrieve this type:
Console.WriteLine(FooA.type); // B1
我需要将此类型作为JSON属性发回。
是否有更好/正确的方法来检索此对象的子类型?
答案 0 :(得分:2)
假设这些类定义:
public class A {
}
public class B : A {
}
您可以找到变量的类型(编译时可检测)和实例的类型(仅限运行时):
A a = null;
if(/*user input*/)
{
a = new A();
}
else
{
b = new B();
}
// this results in A, because that's the variable type
typeof(a);
// this results in either A or B depending on how he "if" went,
// because that's the actual type of the instance
a.GetType();