引用当前类实例作为超类的子类类型
本文关键字:超类 子类 类型 实例 引用 | 更新日期: 2023-09-27 18:01:30
是否有办法获得当前类实例(相当于'this')除了作为子类的类型,在超类?
当我做类似的事情时(它太大太复杂,无法显示实际的代码,我只是希望这工作相同),以以下类型提供给C.DoStuff()是A的实例,而不是B.我正在做反射类的属性工作,因为它是A类型,我没有从A类型获得属性
class A
{
public void DoStuff()
{
C.DoStuff(this);
}
}
class B : A
{
}
class C
{
public static void main(string[] args)
{
A inst = new B();
inst.DoStuff();
}
public static void DoStuff<T>(T obj) {//do reflection on generic type}
}
如果您将函数更改为
public static void DoStuff<T>(T obj)
{
Console.WriteLine(typeof(A).IsInstanceOfType(obj));
Console.WriteLine(obj.GetType());
}
你会看到它仍然是B类型,它不是你所说的A类型,但它是A的一个实例,所以是的,你仍然可以把它当作B
你也可以在
中做同样的事情public void DoStuff()
{
Console.WriteLine(typeof(A).IsInstanceOfType(this));
Console.WriteLine(this.GetType());
C.DoStuff(this);
}
仍然是b,但仍然是a的一个实例
你可能会侥幸逃脱:
Type subclass = typeof(B);