Я думаю, что "приложение-приманка" Perl CPAN †¦
Типичные кавычки после просмотра CPAN впервые:
"У Вас есть библиотека для ЧТО ?"
" Искореняют HTML , должно быть лучшее имя функции когда-либо!"
"Вы можете подводить итог текст в Perl?"
, Как только программисты видят, как легкий должен сделать твердые вещи, они продаются.
Нет - просто создайте Dictionary
, чтобы сопоставить все типы с их псевдонимами. Это фиксированный набор, поэтому сделать это несложно:
private static readonly Dictionary<Type, string> Aliases =
new Dictionary<Type, string>()
{
{ typeof(byte), "byte" },
{ typeof(sbyte), "sbyte" },
{ typeof(short), "short" },
{ typeof(ushort), "ushort" },
{ typeof(int), "int" },
{ typeof(uint), "uint" },
{ typeof(long), "long" },
{ typeof(ulong), "ulong" },
{ typeof(float), "float" },
{ typeof(double), "double" },
{ typeof(decimal), "decimal" },
{ typeof(object), "object" },
{ typeof(bool), "bool" },
{ typeof(char), "char" },
{ typeof(string), "string" },
{ typeof(void), "void" }
};
Это не использует отражение, строго говоря, но вы можете получить псевдоним типа, используя CodeDOM:
Type t = column.DataType; // Int64
string typeName;
using (var provider = new CSharpCodeProvider())
{
var typeRef = new CodeTypeReference(t);
typeName = provider.GetTypeOutput(typeRef);
}
Console.WriteLine(typeName); // long
(Сказав это, я думаю, что другие ответы предполагают, что вы просто использование сопоставления типов CLR с псевдонимами C #, вероятно, лучший способ пойти с этим.)
Будьте проще:
var aliasDict = new Dictionary<Type, string>() {
{ typeof(int), "int" },
{ typeof(long), "long" },
// etc
}
Type reflectedType;
string aliasedTypeName = aliasDict[reflectedType];
Я не думаю, что есть. Псевдоним полностью соответствует концепции времени компиляции, специфичной для используемого вами типичного языка .NET. Как только вы отразите и просмотрите тип, вы увидите настоящий .NET-тип объекта.