¿Cómo puedo llamar al método genérico sin saber el tipo de objeto de instancia?
Frecuentes
Visto 1,755 veces
2 Respuestas
2
var type = <The type where GetData method is defined>;
var genericType = typeof(w);
var methodInfo = type.GetMethod("GetData");
var genericMethodInfo = methodInfo.MakeGenericMethod(genericType);
//instance or null : if the class where GetData is defined is static, you can put null : else you need an instance of this class.
var data = genericMethodInfo.Invoke(<instance or null>, new[]{w});
contestado el 22 de mayo de 12 a las 12:05
2
No es necesario escribir la sección. C# decide implícitamente el tipo del parámetro en un método genérico si no se declara el tipo; solo ve con:
var data = GetData(w);
Aquí hay una muestra;
public interface IM
{
}
public class M : IM
{
}
public class N : IM
{
}
public class SomeGenericClass
{
public T GetData<T>(T instance) where T : IM
{
return instance;
}
}
Y puedes llamarlo así;
IM a = new M();
SomeGenericClass s = new SomeGenericClass();
s.GetData(a);
contestado el 22 de mayo de 12 a las 12:05
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas c# generics object instance or haz tu propia pregunta.