Основываясь на двух приведенных выше ответах на вопрос об использовании словаря, я написал 2 основных метода расширения, которые могут немного помочь в использовании. Включив этот класс в свой проект, вы сможете использовать его, просто вызвав методы Alias () или AliasOrName () для типа, как показано ниже.
Пример использования;
// returns int
string intAlias = typeof(Int32).Alias();
// returns int
string intAliasOrName = typeof(Int32).AliasOrName();
// returns string.empty
string dateTimeAlias = typeof(DateTime).Alias();
// returns DateTime
string dateTimeAliasOrName = typeof(DateTime).AliasOrName();
Реализация;
public static class TypeExtensions
{
public static string Alias(this Type type)
{
return TypeAliases.ContainsKey(type) ?
TypeAliases[type] : string.Empty;
}
public static string AliasOrName(this Type type)
{
return TypeAliases.ContainsKey(type) ?
TypeAliases[type] : type.Name;
}
private static readonly Dictionary<Type, string> TypeAliases = 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" },
{ 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(bool?), "bool?" },
{ typeof(char?), "char?" }
};
}