No es (bastante) cierto que no hay equivalente en C#. No existe un equivalente estático que pueda usar como tipo, o invocar métodos, lo suficientemente cierto. Para eso, use Jorge's answer.
Por otro lado, a veces necesita la idea equivalente para la reflexión, y hay un equivalente allí. Si usted tiene:
interface IFoo<T>
{
T Bar(T t, int n);
}
se puede obtener una Type
que representa IFoo<int>
usando typeof(IFoo<int>)
. Menos conocido, y una respuesta parcial a su pregunta, es que también puede obtener un Type
que representa IFoo<T>
usando typeof(IFoo<>)
.
Esto es útil cuando desea usar IFoo<T>
para algunos T
a través de la reflexión y no sabrá T
hasta el tiempo de ejecución.
Type theInterface = typeof(IFoo<>);
Type theSpecificInterface = theInterface.MakeGenericType(typeof(string));
// theSpecificInterface now holds IFoo<string> even though we may not have known we wanted to use string until runtime
// proceed with reflection as normal, make late bound calls/constructions, emit DynamicMethod code, etc.
¿Cuál es el tipo de plantilla finalmente resuelto? –