0

有没有办法在超类中获取当前类实例(相当于'this'),除了作为子类的类型?

当我做类似的事情时(显示实际代码太大太复杂,我只是希望这同样适用)提供给 C.DoStuff() 的类型是 A 的实例,而不是 B。我正在对一个类的属性进行反射工作,因为它是 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}
}
4

2 回答 2

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 的实例

于 2013-02-27T01:44:51.240 回答
0

你可能可以摆脱这个:

Type subclass = typeof(B);

然后按预期对子类执行反射。

于 2013-02-27T01:51:19.290 回答