-1

私はこれらの2つのクラスを持っています:

public class A
{
    public void ShowType()
    {
        Console.WriteLine(GetType().ToString());
    }
}

public class B : A
{

}

そしてこのメ​​インコード:

static void Main(string[] args)
{
    B b = new B();

    b.ShowType();

    Console.ReadLine();
}

現在、出力は「Bのタイプ」です。B インスタンスから A インスタンスとして ShowType() メソッドを呼び出す方法はありますか? 出力が「 Aのタイプ」になるように?

ありがとう。

4

4 に答える 4

2

ShowType仮想を宣言してそれをオーバーライドするようなことを意味しないと仮定すると、基本的にいいえ。GetType()非仮想であり、常にオブジェクトの実際のランタイム タイプを返します。

于 2013-05-29T07:04:39.590 に答える
0

これがあなたの条件です

まず、基本コードを修正したくありません。次に、B インスタンスを介して ShowType() を呼び出します。だから、これが私の答えです

これは私のコードです

static void Main(string[] args)
{

  B b = new B();
  Type aType = b.Gettype().BaseType; //this is that get A through B class
  ((a)Activator.CreateInstance(atype)).ShowType(); //call ShowType of A class

}
于 2013-05-29T08:03:25.187 に答える
0

これを試して:

Console.WriteLine(this.GetType().BaseType.ToString());

もちろん、これはクラス インスタンスの場合に返されますSystem.ObjectbA

于 2013-05-29T07:08:11.107 に答える