2012-12-28 48 views
1

可能重複:
Get type name without full namespace in C#C#等價的Class.forName()的Java中

有誰知道我們如何能在像什麼Java的一個簡單的方法獲得一個類的名稱可以通過class.getName()來完成嗎?

注:是的,有一些類似CreateInstance類的混亂的解決方法,然後獲取對象的名稱,但我想要一個簡單的方法。

編輯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 

回答

9

你的意思是,像這樣?

typeof(YourClass).Name 

爲了闡明,在.NET框架中有一個類Type。這個類有一個名爲Name的屬性,它檢索類的名字。

因此,要在編譯時檢索類的類型,您可以使用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()); 
1

如果class是某種類型的

  • 例如:

    class.GetType().Name; 
    class.GetType().FullName; // with namespace 
    
  • 類型本身:

    typeof(class).Name; 
    typeof(class).Name; // with namespace 
    
1

試試這個:

typeof(YourClass).FullName;