Hallo Leute,
ich möchte ein SqlDbType zu einem System.Type wandeln.
Ich habe schon gegoogelt, aber leider nicht passendes gefunden, nur bin ich immer auf Funktionen gestossen die, die User selber geschrieben haben.
z.B. switch / case Funktionen
Gibt es da keine fertige .Net Framework Funktion die man nutzen kann!
Sonst schreibe ich halt selber eine switch / case Funktionen!
Bis Dann
Reverent
Ein Convert oder cast o.ä. kann es offensichtlich nicht geben, da **SqlDbType **und DbType **Enumerationen **sind, die einzelnen Elemente also int-Werte repräsentieren. Deshalb kann eine solche Konvertierung nur durch eine separate switch-Lösung ersetzt werden.
Wenn Du schon eine "selbst geschriebene" Methode gefunden hast: was spricht dagegen, so eine zu übernehmen?
Nachtrag
Aber es gibt eine einfache generelle Lösung, die für fast alle Typen funktioniert:
DbType dbTyp = DbType.Boolean; // als Beispiel
string sType = "System." + dbTyp.ToString();
Type typ = Type.GetType(sType);
Man muss dann nur die "speziellen" DbTypen gesondert behandeln.
Jürgen
Ich hatte gerade ein ähnliches Problem: den umgekehrten Weg von System.Type zu DbType. Der Vollständigkeit halber und falls es jemanden interessiert, hier die Methode die ich dafür erstellt habe:
public static DbType ConvertToDbType(Type type)
{
string name = type.Name;
DbType val = DbType.String; // Standard
try
{
val = (DbType)Enum.Parse(typeof(DbType), name, true);
}
catch
{ } // wenn keine Konvertierung möglich -> Standard zurückgeben
return val;
}
Die Methode (zumindest so ähnlich) hab ich übrigens im MSDN-Forum gefunden. Sie sollte eigentlich bei den meisten Standardtypen funktionieren...
Hallo zusammen,
ich habe mir für die "Konvertierung" von DBType auf System.Type immer einen OpenSource OR-Mapper herangezogen und im Quellcode nachgeschaut, welche Typen auf welche gemappt werden.
Aber ich habe auch immer nur Switch Anweisungen dafür gesehen, und denke dass es hier auch die einzig sinnvolle Verarbeitung ist.
Grüße
Norman-Timo
A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”