Список закрытых типов, созданных во время выполнения из открытых универсальных типов
Когда я перечисляю все типы в текущем AppDomain, я вижу свои общие типы с общими заполнителями. Однако, если я создаю экземпляры моих универсальных типов с типом, а затем перечисляю все типы в домене приложения, я нене видеть вновь созданные закрытые типы.
В приведенном ниже примере вывод только:
Foo`1[T]
ищу закрытый тип:
Foo`1[System.Int32]
Есть ли способ увидеть закрытые типы, которые среда выполнения создала для меня на основе моих открытых универсальных типов?
class Foo
{
}
class Program
{
static void Main(string[] args)
{
var tmp = new Foo();
ListTypes();
}
private static void ListTypes()
{
var types = from assembly in AppDomain.CurrentDomain.GetAssemblies()
from type in assembly.GetTypes()
where type.Name.Contains("Foo")
select type;
foreach (var type in types)
Console.WriteLine(type.ToString());
}
}
Я также попытался найти все типы с помощью общего аргумента в надежде обнаружить закрытый тип.
class Foo
{
}
class Bar
{
}
class Program
{
static void Main(string[] args)
{
var tmp = new Foo();
ListTypes();
}
private static void ListTypes()
{
var types = from assembly in AppDomain.CurrentDomain.GetAssemblies()
from type in assembly.GetTypes()
where type.IsGenericType
&& type.GetGenericArguments().Contains(typeof(Bar))
select type;
foreach (var type in types)
Console.WriteLine(type.ToString());
}
}
Это просто для удовлетворения моего любопытства.