mejor manera de ilustrar mi pregunta es con este código de ejemplo:¿Cómo comparar el tipo de objeto con un tipo genérico, irrelevante para el argumento genérico?
class Item {}
class Container<T> {}
class Program
{
static void DoSomething(object something)
{
if(typeof(Item) == something.GetType())
{
System.Console.WriteLine("Item");
}
else if(typeof(Container<>) == something.GetType())
{
System.Console.WriteLine("Container<>");
}
}
static void Main(string[] args)
{
DoSomething(new Item());
DoSomething(new Container<int>());
}
}
La línea siguiente no funcionará:
else if(typeof(Container<>) == something.GetType())
¿Es una manera de hacer que funcione sin cambiar de forma explícita Container<>
en Container<int>
? Quiero saber que el objeto es del tipo 'Container' y realmente no me interesan Container<int>
o Container<string>
. ¿Alguna sugerencia que no sean docenas de líneas de reflexión?