Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

C# Reflection: How to get the type of a Nullable<int>?

What I want to do is something like this:

switch( myObject.GetType().GetProperty( "id") ) {     case ??:          // when Nullable<Int32>, do this     case ??:         // when string, do this     case ??:         // when Nullable<bool>, do this 

What path under object.GetType() would have the string name of the datatype that I could compare using a case statement? I need to know the type so I can have one of many Convert.ToInt32( string ) that will set the value of myObject using Reflection.

like image 327
Zachary Scott Avatar asked Dec 18 '11 06:12

Zachary Scott


1 Answers

I've been using the following type of code to check if the type is nullable and to get the actual type:

if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable<>)) {     return Nullable.GetUnderlyingType(type); } 

If the type is e.g. Nullable this code returns the int part (underlying type). If you just need to convert object into specific type you could use System.Convert.ChangeType method.

like image 60
Toni Parviainen Avatar answered Sep 21 '22 09:09

Toni Parviainen