2010-01-25 14 views
10

Ich habe eine Datenbanktabelle, wo ich die Höhe, Breite, Zustand usw. von Windows speichern. Als Kennung für die Fenster verwende ich den vollständigen Typnamen des Formulars. Es funktioniert gut, aber ich entdeckte, dass einige Formen, die generisch sind, Namen bekommen, die unglaublich lang sind. Der Grund dafür ist, dass der generische Typ mit vollständigen Baugruppeninformationen aufgeführt ist. Gibt es eine Möglichkeit, das zu überspringen?FullName des generischen Typs ohne Assembly-Info?

Zum Beispiel der vollständige Name einer regelmäßigen Form würde wie folgt aussehen:

Some.Name.Space.NameOfForm 

Aber der vollständige Name einer generischen Form sieht wie folgt aus:

Some.Name.Space.NameOfForm`1[[Some.Other.Name.Space.GenericType, AssemblyName, Version=1.0.2.0, Cuntulre=neutral, PublicKeyToken=null]] 

Warum es so lange dauert bekommen ? Gibt es eine Möglichkeit, eine kürzere Version zu bekommen? Zum Beispiel so etwas wie:

Some.Name.Space.NameOfForm`1[[Some.Other.Name.Space.GenericType]] 

Irgendwelche Hinweise?

+0

Wie bekommen Sie den Namen? .GetType(). VollständigerName? –

+0

@Tor: Das wäre richtig, ja. – Svish

+0

@Svish [b8adamson's answer] (http://stackoverflow.com/a/4662878/521757) ist eigentlich der richtige. – jnm2

Antwort

11

I stimmt dbemerlin, dass Ihr Endziel ist seltsam, aber ich wollte nur darauf hinweisen, dass

GetType().ToString(); 

scheint eine kürzere Version des Type-Namen (w/o der Montage Informationen der generischen Argumente) zurückzukehren.

Ich denke, das könnte für eine menschlich lesbarere Version des Typenamens nützlich sein.

+4

Dies sollte die Antwort sein. Vielen Dank. – IllidanS4

2

Ich denke, der für die generische Klasse verwendete Typ hängt von einer bestimmten Assembly ab (wie die meisten .NET-Klassen), also glaube ich nicht, dass Sie nichts anderes erhalten, ohne diese Zeichenfolge manuell durch Reflektion oder String-Parsing zu erzeugen.

OTOH Ich glaube nicht, Typ Namen als Schlüssel ist eine gute Idee, vielleicht sollten Sie darüber nachdenken, einen anderen Schlüssel bekommen (aber ich weiß nicht die Anforderungen, so kann ich nicht etwas anderes empfehlen)

Verwandte Themen