2016-06-16 5 views
0

Ich habe eine DLL mit einer API von einem Anbieter zur Verfügung gestellt. Sie verwenden einen "Typ", um einer Ganzzahl mnemonische Werte zu geben;Wie kann ich einen .NET-Typ referenzieren, wenn er als String übergeben wird?

ele.dog = 1 
ele.cat = 2 
etc. 

Ich kann von innerhalb der Moduls Referenz ele.dog wenn ich brauche ein 1, 2 für Katze, usw.

dim myEle As TheirClass.ele = ele.dog 

Allerdings würde ich ein String-Variable in der Lage sein mag von "zu übersetzen Hund "zu" 1 ". Was ist die Syntax dafür?

Der Grund ist, ich muss zurück zu ihrer Klasse die "1" und alles, was ich habe, ist Hund.

+1

Es klingt, als ob sie eine "enum" verwenden, entweder explizit oder synthetisch. 'Enum' hat einen Parsing-Mechanismus, wenn es wirklich eine' Enum' ist, ansonsten müssen Sie Reflektion verwenden. –

+0

Woher kommt '" dog "' als String var? 'ele.dog' ist keine Zeichenkette – Plutonix

+0

" Hund "kommt von einer externen Datenquelle. Ja, TheirClass.ele ist ein enum, ich werde versuchen, Dokumente zum Enum-Parsing zu finden. –

Antwort

0

Sie können Type.GetType() (oder möglicherweise Assembly.GetType() unter Verwendung der Assembly des Herstellers) aufrufen, um eine Instanz von Type aus dem vollqualifizierten Typnamen abzurufen. Von dort aus können Sie die verschiedenen Reflektions-APIs verwenden, um eine Instanz dieses Typs zu erstellen (z. B. Type.GetConstructor()).

Sobald Sie eine Instanz dieser Klasse haben, können Sie das Objekt auf den tatsächlichen Typ umwandeln, den Sie kennen und wie gewohnt verwenden.

1

Dank Kommentare von #DStanley, habe ich nach Parsing gesucht. Das Äquivalent zu;

dim myEle As TheirClass.ele = ele.dog 

ist

myVar = "dog" 
dim myEle as TheirClass.ele = [Enum].Parse(GetType(TheirClass.ele), myVar) 

Mindestens diese Syntax keine Fehler geben.

Es hat auch den zusätzlichen Vorteil zu tun, was ich brauche.

Verwandte Themen