EDIT: I was half wrong in the answer below.
Have a look at CSharpCodeProvider.GetTypeOutput
. Sample code:
using Microsoft.CSharp;
using System;
using System.CodeDom;
class Test
{
static void Main()
{
var compiler = new CSharpCodeProvider();
// Just to prove a point...
var type = new CodeTypeReference(typeof(Int32));
Console.WriteLine(compiler.GetTypeOutput(type)); // Prints int
}
}
However, this doesn’t translate Nullable<T>
into T?
– and I can’t find any options which would make it do so, although that doesn’t mean such an option doesn’t exist 🙂
There’s nothing in the framework to support this – after all, they’re C#-specific names.
(Note that string
isn’t a primitive type, by the way.)
You’ll have to do it by spotting Nullable`1
yourself (Nullable.GetUnderlyingType
may be used for this, for example), and have a map from the full framework name to each alias.