Lo que necesito es un método que puede devolver un tipo (sin objeto, porque no se permite la conversión) después de una condición. He aquí un ejemplo:C#, tipo de retorno dinámico
??? right (string fullStr, int endPosition)
{
string tmpStr = "";
tmpStr = fullStr.Substring(endPosition);
if(tmpStr.Length == 1)
return tmpStr[0]; //return a char!!
else
return tmpStr; //return a string!!
}
Probé genéricos, pero yo sólo era capaz de devolver el tipo que venía en, (si es un char se produjo en un char fue devuelto, y si una cadena se produjo en una cadena fue devuelto) yo probamos este:
public static T right<T>(T stringToCheck, int endPosition)
{
if (typeof(T).ToString() == "System.String")
{
string fullString = (string)((object)stringToCheck);
string response = "";
response = fullString.Substring(endPosition);
if (response.Length == 1)
{
return (T)((object)response[0]);
}
else
return (T)((object)response);
}
return stringToCheck;
}
no puedo usar encasillamiento (volviendo un objeto), cant params uso ref.
llamadas al método tienen que permanecer el mismo:
right(stringOrChar,int) -> returns string or char.
Gracias
tal vez usted podría ayudarnos. ¿Por qué quieres tener múltiples tipos de devolución? ¿Por qué quieres un char en algunas circunstancias y una cadena en otras? – McKay
Ok, la razón por la que necesito esto es porque estoy portando un montón de código, la sintaxis es principalmente compatible, pero tengo que saber si es posible hacerlo porque hay muchas "left (str, 1) <'x '' pero otras veces es simplemente abc = left (str, 3). Parece que no hay una distinción clara entre un char y una cadena en el idioma de donde proviene. El objetivo aquí es no tocar el código SI ES POSIBLE, pero no es porque no sé cómo no es posible :-) – Enriquev