我在一个类中引用一个父类,怎么才能将这个父类的实例转变成我传统过来的子类的实例呢?
比如:
class A:B
{
}
class C
{
B a;
c(B a)
{
this.a = a;
}
public void say()
{
//todo 这里将a转换为A的实例 应该怎么做
}
}
class test
{
public static void Main()
{
A a = new A();
C c = new C(a);
}
}
...全文
1855打赏收藏
C#中父类和子类的转换问题?
我在一个类中引用一个父类,怎么才能将这个父类的实例转变成我传统过来的子类的实例呢? 比如: class A:B { } class C { B a; c(B a) { this.a = a; } public void say() { //todo 这里将a转换为A的实例 应该怎么做 } } class test { public static void Main() { A a = new A(); C c = new C(a); } }
不能用强制类型转换的。
因为有很多个类继承之B这个类。
传递的时候也不一定是哪个类,所以我想有没有什么方法能用它自己的类型来转变。
我现在只是能通过getType获得它的类型,但是不知道怎么转换成自己的类型。
比如
class A:B
{
}
class D:B
{
}
class F:B
{
}
class C
{
B a;
c(B a)
{
this.a = a;
}
public void say()
{
//todo 这里将a转换为A D F的实例 应该怎么做 不应该是强制类型转换的
}
}
class test
{
public static void Main()
{
A a = new A();
C c = new C(a);
c.say();
D d = new D();
C cc = new C(d);
cc.say();
F f = new F();
C ccc = new C(f);
ccc.say();
}
}