2017-07-05 7 views
0

C#では、インスタンス化されたオブジェクトのタイプではなく、オブジェクトが継承されたオブジェクトであるオブジェクトの継承されたクラスタイプを取得するにはどうすればよいですか?ここでクラスを取得する継承したオブジェクトのタイプですか?

いくつかのコードです:

public class ClassA 
{ 
    public virtual void GetClassType() 
    { 
     var type = this.GetType(); 
     Console.WriteLine(type.Name); 
    } 
} 
public class ClassB : ClassA 
{ 
    public override void GetClassType() 
    { 
     base.GetClassType(); 
     var type = this.GetType(); 
     Console.WriteLine(type.Name); 
    } 
} 
public class ClassC : ClassB 
{ 
    public override void GetClassType() 
    { 
     base.GetClassType(); 
     var type = this.GetType(); 
     Console.WriteLine(type.Name); 
    } 
} 

private void GetClassType() 
{ 
    var objectA = new ClassC(); 
    objectA.GetClassType(); 
} 

GetClassType方法は、コンソールに次のように出力します

クラスC はクラスC クラスC

タイプを取得することは可能ですClassの代わりに、オブジェクトのTypeの代わりに、コンソールの出力は以下のようになりますか?あなたはすでにそれを継承するクラスを知っている基本型を継承するクラスを持っている場合

にClassA ClassBの クラスC

+1

をあなたがやろうとしているもののコード例を記載してください。 –

+0

基本型を取得する方法を教えていますか? –

+0

'this.GetType()。Name'の代わりに' nameof(ClassA) '、' nameof(ClassB) '、' nameof( 'クラスC) '。 –

答えて

0

確認したい場合は、次のようにすることができます。

if(object is BaseType) 
{ 
//Dostuff 
} 
1

あなたは

このような
class A {} 

class B : A {} 

何かを持っている場合あなたがこれを行うことができます:

var b = new B(); 
var baseType = b.GetType().BaseType; 
0
using System; 

class MyClass 
{ 
} 

class MyClass2: MyClass 
{ 
} 
namespace Appl 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
     System.Console.WriteLine(typeof(MyClass2).BaseType.Name); 
     } 
    } 
} 
関連する問題