2009-07-24 18 views
11

Tengo una pregunta sobre cómo determinar el tipo de propiedad Nullable de un objeto.C# determina una propiedad Nullable tipo DateTime cuando se utiliza la reflexión

Objeto A con una propiedad Fecha y hora? Fecha de Creación;

cuando estoy iterando a través de sus propiedades como el siguiente código, ¿cómo puedo verificar si una propiedad es un tipo Nullable DateTime?

gracias

foreach (PropertyInfo pi in ObjectA.GetType().GetProperties()) 
     { 
      //do the compare here 
     } 

Respuesta

31
pi.PropertyType == typeof(DateTime?) 
+0

gracias ~ .... :) – Eatdoku

+0

otra pregunta tú ... cómo hago conmutador basado en en el tipo? ¿Tengo que usar fullname en su lugar? ¿o debería estar usando la declaración "If" en su lugar? ¿Cuál es la cadena FullName para un tipo de fecha y hora Nullable? gracias – Eatdoku

+1

Le recomiendo que use 'if', y evite' FullName'. Si quieres ver 'FullName' para' DateTime? ', Entonces simplemente imprime' typeof (DateTime?). FullName' - pero va a ser muy largo, hará que tu código sea menos legible, será frágil (¿qué pasa si ocasionalmente borras un personaje en algún lugar?), y dará lugar a comparaciones más lentas (los objetos 'Tipo' se comparan por referencia, es decir, hay como máximo un objeto' Tipo' para cualquier dado, de modo que si dos referencias son iguales, entonces este es del mismo tipo; y tal comparación es rápida) –

2
pi.PropertyType == typeof(Nullable<DateTime>); 
0

Probar:

property.PropertyType.Equals(typeof(DateTime?)) 
Cuestiones relacionadas