El método genérico es ...C#: Obtener parámetro de tipo en tiempo de ejecución a pasar a un método genérico
public void PrintGeneric2<T>(T test) where T : ITest
{
Console.WriteLine("Generic : " + test.myvar);
}
Voy a llamar a esto desde Principal() ...
Type t = test2.GetType();
PrintGeneric2<t>(test2);
I obtener el error "CS0246: el tipo o espacio de nombres 't' no se pudo encontrar" y "CS1502: el mejor método sobrecargado partido DoSomethingClass.PrintGeneric2 < t> (T) tiene argumentos no válidos"
esto está relacionado con una pregunta anterior aquí : C# : Passing a Generic Object
He leído que el tipo genérico no se puede determinar en tiempo de ejecución, sin el uso de reflection o methodinfo, pero no estoy muy claro sobre cómo hacerlo en esta instancia.
Gracias si pueden aclararme =)
su sugerencia obligaría al compilador a inferir T como System.Type. No creo que refleje correctamente la intención OP de pasar un tipo de evaluación de tiempo de ejecución –
@AZ, no, no lo haría. Ignore completamente la parte 'Type t = test2.GetType()', no es necesario aquí. 'test2' implementa' ITest' (ver su pregunta anterior). Pasar 'test2' como está, es suficiente aquí. –
Bastante justo. No verifiqué la otra pregunta, así que me faltaba el contexto de test2. Sigo soportando mi suposición de que el OP desea resolver T dinámicamente en tiempo de ejecución de alguna manera y que no es lo que genéricos son para –