modo migliore per illustrare la mia domanda è con questo codice di esempio:Come confrontare il tipo di oggetto con un tipo generico, irrilevante per argomento generico?
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 riga seguente non funziona:
else if(typeof(Container<>) == something.GetType())
E 'un modo per farlo funzionare senza cambiare esplicitamente Container<>
in Container<int>
? Voglio sapere che l'oggetto è di tipo "Container" e non ho alcun interesse è lo Container<int>
o Container<string>
. Qualche suggerimento oltre a dozzine di linee di riflessione?