que en realidad tienen una clase de utilidad que utiliza los genéricos de "envolver" sesión, lo que hace todo el "trabajo sucio" para mí, también tengo algo casi idéntico para trabajar con valores de cadena de consulta.
Esto ayuda a eliminar el código duplicado para los controles (a menudo numerosos) ..
Por ejemplo:
public class QueryString
{
static NameValueCollection QS
{
get
{
if (HttpContext.Current == null)
throw new ApplicationException("No HttpContext!");
return HttpContext.Current.Request.QueryString;
}
}
public static int Int(string key)
{
int i;
if (!int.TryParse(QS[key], out i))
i = -1; // Obviously Change as you see fit.
return i;
}
// ... Other types omitted.
}
// And to Use..
void Test()
{
int i = QueryString.Int("test");
}
NOTA:
Esto obviamente hace uso de la estática, que algunas personas no les gusta por la forma en que puede afectar código de prueba .. Usted puede fácilmente Refactor en algo que funciona en función de las instancias y las interfaces que requiera ... Creo que el ejemplo estático es el más ligero.
Espero que esto ayude/da lugar a la reflexión.
Tuve que cambiar la línea 15 y 17 para hacer este trabajo: var converter = TypeDescriptor.GetConverter (typeof (T)); if (! Converter.CanConvertTo (value.GetType())) –
Gracias Bryan –
Hola, eso es muy bonito, pero no funciona con nullables, por ejemplo int? Puede haber un error en el convertidor de tipo? Vale la pena probar si estás interesado. – bplus