我怎样才能避免使用这个字典(或动态创建它)?
Dictionary<Type,Type> CorrespondingNullableType = new Dictionary<Type, Type>
{
{ typeof(bool), typeof(bool?) },
{ typeof(byte), typeof(byte?) },
{ typeof(sbyte), typeof(sbyte?) },
{ typeof(char), typeof(char?) },
{ typeof(decimal), typeof(decimal?) },
{ typeof(double), typeof(double?) },
{ typeof(float), typeof(float?) },
{ typeof(int), typeof(int?) },
{ typeof(uint), typeof(uint?) },
{ typeof(long), typeof(long?) },
{ typeof(ulong), typeof(ulong?) },
{ typeof(short), typeof(short?) },
{ typeof(ushort), typeof(ushort?) },
{ typeof(Guid), typeof(Guid?) },
};
答案 0 :(得分:5)
你想做类似的事情:
Type structType = typeof(int); // or whatever type you need
Type nullableType = typeof(Nullable<>).MakeGenericType(structType);
获取给定T的相应Nullable<T>
(在此示例中为int
)
答案 1 :(得分:2)
type?
只是Nullable<type>
知道这一点,你就可以做这样的事情:
public Type GetNullableType(Type t) => typeof(Nullable<>).MakeGenericType(t);
答案 2 :(得分:2)
使用简单的泛型方法:
public Type GetNullable<T>() where T : struct
{
return typeof(Nullable<T>);
}
这应该返回您传入的任何类型的可空类型。