2012-12-28 85 views
5

我需要類方法中的類名,例如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 

回答

14

你正在尋找的是一個叫做Type,其中包含關於類的元數據。

您可以在任何object實例上使用typeof(class).GetType()方法。

不同的是,typeof是靜態解析的,GetType在運行時解析。

void X(Type type) 
{ 
    Console.WriteLine(type.FullName); 
} 

X(typeof(tblEmployee)); 
+0

由於tblEmployee是一個類而不是對象,X(tblEmployee.GetType())是錯誤的,因爲可以在對象上調用GetType()。相反,X(typeof(tblEmployee))是正確的。 – Alireza

+0

@Alireza對不起,我認爲這是該班的一個實例。固定。 – Rotem

7

你可以使用泛型和FullName property of Type,因爲這樣的:

void WriteClassName<TClass>(TClass item) 
    where TClass : class { 
    Console.WriteLine(item.GetType().FullName); 
} 

,然後TClass應用約束上按您的要求。

+0

我們需要傳遞類型而不是對象。在這種情況下,該方法將接受TClass類型的對象。我不是這個,我們想要的是...... – Gaurav

1
void X(Type type) 
{ 
    if(type == typeof(DesiredType)) 
    { 
      Do Some Action 
    } 
} 
相關問題