[C# /.NET] Mapping naar system types ("int"->"System.Int32")

Pagina: 1
Acties:

  • MrBucket
  • Registratie: Juli 2003
  • Laatst online: 29-10-2022
Ik ben bezig met het genereren van C# -code op basis van mijn database-schema met behulp van MyGeneration. Nu biedt MyGeneration functionaliteit om me te vertellen welk C#-type mapt op een databasetype van een bepaalde kolom: als ik bijv. van een nvarchar-kolom het C#-type opvraag krijg ik netjes "string" terug, en voor een bit-kolom krijg ik "bool" terug.

Allemaal heel handig, maar het vervelende is dat ik de naam van het .NET-type terug krijg als string (en niet als een Type object). Omdat ik dit Type-object wel nodig heb, wil ik voor een string met een C# typenaam het bijbehorende Type-object opvragen.

De meest voor de hand liggende oplossing is dan om Type.GetType() te gebruiken, echter:
C#:
1
2
Type t1 = Type.GetType("bool");           //Werkt niet (geeft null terug)
Type t2 = Type.GetType("System.Boolean"); //Werkt wel


Ergens ook wel logisch, omdat "bool" een C#-specifieke naam is voor het 'echte' type System.Boolean. Nu wil ik dus deze C# -specifieke typenamen kunnen mappen naar hun echte typenamen, maar ik kan in het .NET framework hier geen voorziening voor vinden? Met name de "Microsoft.CSharp" namespace leek veelbelovend, maar hier lijken alleen maar compiler-achtige classes in te staan, waar ik volgens mij niet zoveel mee kan.

In het ergste geval zou ik zelf een lookup-table kunnen definieren, maar ik vraag me af of iemand niet toch toevallig van het bestaan weet van een framework-functie die strings als "bool" kan mappen naar hun 'echte' typenamen?

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 30-01 13:40

.oisyn

Moderator Devschuur®

Demotivational Speaker

Ik snap niet waar om je niet zelf een tabelletje kunt maken. Het aantal types is namelijk vrij gelimiteerd en goed gedocumenteerd :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • MrBucket
  • Registratie: Juli 2003
  • Laatst online: 29-10-2022
.oisyn schreef op zondag 04 november 2007 @ 17:03:
Ik snap niet waar om je niet zelf een tabelletje kunt maken. Het aantal types is namelijk vrij gelimiteerd en goed gedocumenteerd :)
Het is inderdaad waar dat het maar om een beperkte set van types gaat, daar heb je wel een punt.
En zelf een lookup-tabelletje maken is ook niet moeilijk (dit heb ik nu ook gedaan, voor het geval de mooiste oplossing zich niet aandient), ik vind het alleen een beetje vreemd dat die mapping niet standaard in .NET zit.

Je zou verwachten dat men in .NET, waar alles met Reflection uit te vragen valt en men met CodeDOM on-the-fly nieuwe classes kan genereren, ook wel een voorziening zou moeten hebben voor zoiets simpels, toch? :)

  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 27-01 19:30
Mja, maar jij bent echt de eerste persoon die zoiets nodig heeft volgens mij. Meestal weet je ook van een database wat je terug gaat krijgen.

:) wel een originele insteek, en met je lookuptable zal het prima lukken natuurlijk. Handig dat je database je dat verteld!

~ Mijn prog blog!