2012-06-28 15 views
5

Esto no se compila, pero lo que estoy tratando de hacer es simplemente lanzar el objeto a 't' que se pasa a la función?¿Cómo convertir un objeto al tipo pasado a una función?

public void My_Func(Object input, Type t) 
{ 
    (t)object ab = TypeDescriptor.GetConverter(t).ConvertFromString(input.ToString()); 
} 
+1

¿Le entiendo correctamente que desea convertir el objeto de entrada al Tipo t dado? ¿Qué pasará si la entrada no es del tipo t? – FrankE

+0

@FrankE - La función funcionará de forma tal que quien la use sabrá ingresar el tipo correcto en la función, ¡yo asumo bajo mi responsabilidad! – BornToCode

+0

¿Qué quieres hacer con el objeto? Tal vez quiera usar una función genérica 'public void My_Func (T input)'? – ekholm

Respuesta

13

Se podría hacer algo como:

object ab = Convert.Changetype(input, t); 
embargo

, parece que desea utilizar ab de una manera inflexible de tipos, que sólo se puede hacerlo mediante el uso de los genéricos:

public void My_Func<T>(Object input) 
{ 
    T ab = (T)Convert.ChangeType(input, typeof(T)); 
} 
+0

No sabía nada sobre 'Convert.Changetype', gracias. –

+0

¿Cuál es la diferencia entre 'object ab = Convert.Changetype (input, t);' y 'object ab = input'? – ekholm

+0

@ekholm 'object ab =" 01/01/2008 "' contra 'objeto ab = Convert.ChangeType (" 01/01/2008 ", typeof (DateTime))' –

1
public void My_Func(Object input, Type t) 
{ 
    object test = new object(); 
    test = Convert.ChangeType(test, t); 
    test = TypeDescriptor.GetConverter(t).ConvertFromString(input.ToString()); 
} 
Cuestiones relacionadas