¿Es posible escribir una construcción similar?
quiero fijar, de alguna manera, valor por defecto de argumento de tipo T.Métodos genéricos y argumentos opcionales
private T GetNumericVal<T>(string sColName, T defVal = 0)
{
string sVal = GetStrVal(sColName);
T nRes;
if (!T.TryParse(sVal, out nRes))
return defVal;
return nRes;
}
Además, encontré siguiente enlace: Generic type conversion FROM string
pienso, este código debe trabajar
private T GetNumericVal<T>(string sColName, T defVal = default(T)) where T : IConvertible
{
string sVal = GetStrVal(sColName);
try
{
return (T)Convert.ChangeType(sVal, typeof(T));
}
catch (FormatException)
{
return defVal;
}
}
Sí, no puedo llamar a TryParse. Pero tal vez algo similar? Tal vez, agregue alguna restricción al parámetro type (me refiero a 'where: ...')? Si los tipos numéricos implementan alguna interfaz de conversión. – hardsky
CLR no tiene ningún concepto de "métodos estáticos virtuales", el compilador no puede inferir métodos estáticos de un tipo. Hasta donde sé, no hay una solución limpia para eso. –
http://stackoverflow.com/questions/196661/calling-a-static-method-on-a-generic-type-parameter para más detalles –