2013-02-27 18 views
16

Mam wiele obiektów, z których każdy posiada informacje na temat jego typu.
lubię:typeof: jak uzyskać typ z ciągu znaków

string stringObjectType = "DateTime"; 

Podczas pracy, nie mam sam obiekt.
Więc nie mogę go przetestować typeof (object)

Jak mogę uzyskać podczas uruchamiania typ obiektu przez:

typeof (stringObjectType) 
+0

Czy masz ciągi jako "DateTime" lub "System.DateTime"? –

+0

Czy tego właśnie potrzebujesz? http://msdn.microsoft.com/en-us/library/w3f99sx1.aspx – Youssef

+0

Mówiąc dokładniej, nie można pisać 'typeof (object)'. Możesz podać tylko nazwę klasy. Zamiast tego należy użyć 'object.GetType'. Tylko mówię. – RoadBump

Odpowiedz

16
try 
{ 
    // Get the type of a specified class. 
    Type myType1 = Type.GetType("System.DateTime"); 
    Console.WriteLine("The full name is {0}.", myType1.FullName); 
    // Since NoneSuch does not exist in this assembly, GetType throws a TypeLoadException. 
    Type myType2 = Type.GetType("NoneSuch", true); 
    Console.WriteLine("The full name is {0}.", myType2.FullName); 
} 
catch(TypeLoadException e) 
{ 
    Console.WriteLine(e.Message); 
} 
catch(Exception e) 
{ 
    Console.WriteLine(e.Message); 
} 

Zobacz Type.GetType(string) on MSDN

+0

Tak, dlaczego jego kod jest poprawny – animaonline

+2

Ten kod jest poprawny. Czy to odpowiada na jego pytanie? string stringObjectType = "DateTime"; nie dostanie prawidłowego typu tutaj. – Evelie

+0

Wierzę, że był to tylko przykład: – animaonline

18

Można użyć Type.GetType() uzyskać typ z nazwy ciągu. Możesz więc:

Type DateType = Type.GetType("System.DateTime"); 

Nie można po prostu użyć "DateTime", ponieważ nie jest to nazwa tego typu. Jeśli to zrobisz, a nazwa jest błędna (nie istnieje), to rzuci wyjątek. Będziesz więc potrzebował spróbować/złapać to.

można uzyskać właściwą nazwę typu dla danego obiektu, wykonując:

string TypeName = SomeObject.GetType().FullName; 

Jeśli trzeba użyć nazwy niejasne lub niepełne, to będziemy mieć czas zabawy aprowizacji z refleksji. Nie niemożliwe, ale z pewnością ból.

Powiązane problemy