2016-10-05 2 views
-2

Ich benutze Gettype().Name, um meinen Klassennamen zu bekommen. Wenn ich Code ausführe, gibt er mir den Klassennamen, fügt aber einen Müllwert wie SavingsAccount_32335C302A2DED6EFF6B9AFA5B79FC440AFD57B29E5123233712CE7F0C5646BF als Ausgabe hinzu. Das gleiche gilt für meinen chequing Account. Jede Hilfe zu nur geeting Klassennamen wie SavingAccountWie kann ich Müllwerte von gettype() entfernen.

+1

Hängt davon ab, welche Bibliothek Sie arbeiten mit. Es ist eigentlich eine Proxy-Klasse, die normalerweise von Tools wie Mocking Frameworks und ORMs verwendet wird. – Rob

+5

Wenn Sie es nur als Zeichenfolge benötigen, dann split ('_') [0] –

+1

@ShannonHolsinger Der Unterstrich ist ein gültiges Zeichen in Klassennamen, sodass die Methode den Klassennamen aufteilen kann. – Abion47

Antwort

-1

1) Verwenden Sie

string myType = myClass.GetType().ToString(); 
string[] parts = myType.Split('_'); 
if(myType.Length>{X}&&parts.Length>0)//add RegEx GUID test to be sure 
{ 
string myClassName = ""; 
for(int I=0;i<parts.Length-1;i++){ 
     myClassName+= parts[I]; 
     if(I<parts.Length-1) 
     myClassName+="_"; 
} 
} 

Wenn 'X'> 35 sagen, das auf jeder Klasse arbeitet weniger als 35 Zeichen lang sein. Fügen Sie einen GUID-Test mit RegEx hinzu, wenn Sie lange Klassennamen herausfiltern müssen.

2) Da Sie dieses Problem haben, verwenden Sie keine Unterstriche in Ihren anderen Klassen.

3) Wenn das Add-On eine GUID ist (oder wenn es immer die gleiche Anzahl von Ziffern hat), prüfen Sie die Länge und löschen Sie die letzten X Ziffern, wenn der Klassenname lang ist und einen Unterstrich enthält.

4) Verwenden RegEx für eine guid testen https://www.google.com/search?q=regex+guid+test&ie=&oe=#q=regex+guid+test+c-sharp

5) Pflegen Sie eine Liste Ihrer Klassen und Test für IndexOf

Verwandte Themen