1

重複の可能性:
C# で完全な名前空間なしで型名を取得する

Javaがclass.getName().

CreateInstanceNB: はい、クラス型のような厄介な回避策がいくつかあり、オブジェクトの名前を取得しますが、簡単な方法が必要です。

編集1:

実際には、X などのメソッドにクラス名が必要です。一方、型の安全性を失いたくないので、他の開発者がメソッドに文字列を渡すことを許可しません。このようなもの:

void X( ??? class) // --> don't know how
{
     var className = get the name of class // --> which I don't know how
     Console.WriteLine(className);
}

X(tblEmployee); //--> usage of X, where tblEmployee is a POCO class
4

3 に答える 3

10

つまり、このように?

typeof(YourClass).Name

明確にするために、.NET フレームワークには という名前のクラスがありTypeます。Nameこのクラスには、クラスの名前を取得するという名前のプロパティがあります。

したがって、コンパイル時にクラスの Type を取得するには、 を使用できますtypeof

var typeName = typeof(YourClass).Name

実行時に型がわからない場合は、GetType()メソッドで取得できます。これは、すべての .NET オブジェクトに共通です。

Animal a = new Dog();
var typeName = a.GetType().Name;

編集1の答え

Typeパラメータを渡す必要があります

void X(Type classType) 
{
     var className = classType.Name;
     Console.WriteLine(className);
}

そして、への呼び出しは次のXようになります

X(typeof(YourClass));

また

X(YourInstance.GetType());
于 2012-12-28T12:46:45.413 に答える
1

これを試して:

typeof(YourClass).FullName;
于 2012-12-28T12:48:31.313 に答える
1

もしそうclassなら

  • いくつかのタイプのインスタンス:

    class.GetType().Name;
    class.GetType().FullName; // with namespace
    
  • タイプ自体:

    typeof(class).Name;
    typeof(class).Name; // with namespace
    
于 2012-12-28T12:47:41.520 に答える