Lo que estoy haciendo es buscar un valor para un campo en particular en la tabla hash. El objeto puede ser un puñado de tipos primitivos cuyo valor está destinado a colocarse dentro de XML, pero sale de la tabla hash como un objeto. Así que tengo el problema de necesitar decidir qué tipo es, lanzarlo y luego usar ese tipo ToString. Sería bueno si no necesitara lanzarlo, pero luego llamará a ToString en el tipo de objeto y no al método de contraparte en el tipo real.Una forma limpia de convertir objetos a un tipo real
El siguiente código es funcionalmente correcto, pero no me siento cómodo con él. Tal vez seguir este camino de la comodidad me lleve a ser un purista. De cualquier manera, apreciaría mucho una mejor manera de escribir esto, si eso existe.
public string GetColumnValue(string columnName)
{
object value = item[columnName];
if (value == null)
return string.Empty;
if (value.GetType() == typeof(string))
{
return (string)value;
}
else if (value.GetType() == typeof(double))
{
return ((double)value).ToString();
}
...
}
Esto funciona para los tipos básicos, pero puede no funcionar bien para tipos personalizados; depende de lo que se puede devolver en el elemento [columnName] ... –
Reed, ¿puede dar un ejemplo? – spender
Honestamente, no pensé que esto funcionaría. Entonces, para los argumentos, ¿cómo se puede llamar explícitamente a una implementación de ToString en un tipo particular de árbol de herencia? –