有没有办法获取当前类实例(相当于'this'),除了作为子类的类型,在超类中?
当我做类似的事情(显示实际代码太大而且太复杂,我只是希望它的工作原理相同)时,提供给C.DoStuff()的类型是A的一个实例,不是B.我正在对一个类的属性进行Reflection工作,因为它的AI类型没有得到类型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}
}
答案 0 :(得分:1)
如果您将功能更改为
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的实例
答案 1 :(得分:0)
你可能只是逃避这个:
Type subclass = typeof(B);
然后按预期对子类进行反射。