public static T ValorAtributo <T>(XAttribute pAtributo) { E_TIPO_DATO pTipoDato = E_TIPO_DATO.INT; Type vTipo = typeof(T); object oAtributo = null; if (vTipo == typeof(int) || vTipo == typeof(int?)) { pTipoDato = E_TIPO_DATO.INT; } if (vTipo == typeof(decimal) || vTipo == typeof(decimal?)) { pTipoDato = E_TIPO_DATO.DECIMAL; } if (vTipo == typeof(bool) || vTipo == typeof(bool?)) { pTipoDato = E_TIPO_DATO.BOOLEAN; } if (vTipo == typeof(DateTime) || vTipo == typeof(DateTime?)) { pTipoDato = E_TIPO_DATO.DATETIME; } if (vTipo == typeof(string)) { pTipoDato = E_TIPO_DATO.STRING; } if (vTipo == typeof(Guid)) { pTipoDato = E_TIPO_DATO.GUID; } oAtributo = ValorAtributo(pAtributo, pTipoDato); if (!(vTipo.IsGenericType && vTipo.GetGenericTypeDefinition() == typeof(Nullable <>)) && oAtributo == null) { oAtributo = default(T); } return((T)oAtributo); }
public static object ValorAtributo(XAttribute pAtributo, E_TIPO_DATO pTipoDato) { object oAtributo = null; if (pAtributo != null) { switch (pTipoDato) { case E_TIPO_DATO.INT: int intValue = -1; if (int.TryParse(pAtributo.Value, out intValue)) { oAtributo = intValue; } else { oAtributo = null; } break; case E_TIPO_DATO.DECIMAL: decimal decValue = -1; if (decimal.TryParse(pAtributo.Value, out decValue)) { oAtributo = decValue; } else { oAtributo = null; } break; case E_TIPO_DATO.DATETIME: DateTime temp; if (DateTime.TryParse(pAtributo.Value, out temp)) { oAtributo = temp; } else { oAtributo = null; } break; case E_TIPO_DATO.BOOLEAN: switch (pAtributo.Value) { case "1": case "true": oAtributo = true; break; case "0": case "false": oAtributo = false; break; default: oAtributo = null; break; } break; case E_TIPO_DATO.STRING: oAtributo = pAtributo.Value; break; case E_TIPO_DATO.GUID: Guid guidValue; if (Guid.TryParse(pAtributo.Value, out guidValue)) { oAtributo = guidValue; } else { oAtributo = null; } break; } } return(oAtributo); }