Obtener un tipo de datos 'básico' en lugar de uno anulable extraño, mediante la reflexión en c #
Mi necesidad básica es obtener los tipos de datos de un tipo anónimo generado a partir de una consulta LINQ to SQL.
Tengo un fragmento de código (más inteligente de lo que podría escribir, ya que realmente no he profundizado en la reflexión) que devuelve los tipos de datos de un tipo anónimo y funciona perfectamente para los elementos marcados como 'no anulables' en las propiedades linq2sql. Entonces, si tengo una cadena, volverá como System.String. Sin embargo, cuando el elemento es anulable, termino con el 'nombre completo' de ser:
{Name = "Nullable1" FullName = "System.Nullable
1 [[System.Decimal, mscorlib, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089]] "}
Todo lo que quiero extraer es el tipo System.Decimal en tal caso (y en casos de cadenas o lo que sea, solo quiero System.String). He revisado las propiedades y no puedo encontrar nada que parezca almacenar esto.
private static Dictionary<string, Type> GetFieldsForType<T>(IEnumerable<T> data)
{
object o = data.First();
var properties = o.GetType().GetProperties();
return properties.ToDictionary(property => property.Name, property => property.PropertyType);
}
La consulta LINQ (que no creo que realmente importe aquí):
var theData = from r in db.tblTestEdits select new { myitem = r.textField, mydecimal = r.decimalField };
Encontré este enlace que parece tratar de abordar algo similar.
http: //ysgitdiary.blogspot.com/2010/02/blog-post.htm
Aunque parece que devuelve una "cadena" de lo que es el tipo en lugar del tipo real, que es lo que necesito. No estoy seguro de cómo convertir tal cosa.
Muchas gracias a todos.