有些时候我们需要判断某个类型是否是Nullable类型,并且可能需要知道它的原始类型,
比如在做些ORM相关工作时,就需要这方面的应用,如下代码使用可以实现这个要求
class Program
{
static void Main( string[] args )
{
RL( );
Type type = typeof( DateTime? );
Type originalType;
if ( IsNullable( type , out originalType ) )
{
WL( originalType.ToString( ) );
}
else
{
WL( "NOT Nullable" );
}
type = typeof( DateTime );
if ( IsNullable( type , out originalType ) )
{
WL( originalType.ToString( ) );
}
else
{
WL( "NOT Nullable" );
}
RL( );
}
private static bool IsNullable( Type p , out Type originalType )
{
bool result = false;
if ( p.IsGenericType && p.GetGenericTypeDefinition( ) == typeof( Nullable<> ) )
{
result = true;
originalType = p.GetGenericArguments( )[0];
}
else
{
originalType = null;
}
return result;
}
#region Helper methods
private static void WL( object text , params object[] args )
{
Console.WriteLine( text.ToString( ) , args );
}
private static void RL( )
{
Console.ReadLine( );
}
private static void Break( )
{
System.Diagnostics.Debugger.Break( );
}
#endregion
}