Liste geschlossener Typen auf, die zur Laufzeit aus offenen generischen Typen erstellt wurden

Wenn ich alle Typen in der aktuellen AppDomain aufführe, werden meine generischen Typen mit den generischen Platzhaltern angezeigt. Wenn ich jedoch meine generischen Typen mit einem Typ instanziiere und dann alle Typen in der appDomain aufliste, werden die neu erstellten geschlossenen Typen nicht angezeigt.

Im folgenden Beispiel ist die Ausgabe nur:

Foo`1[T]

Ich suche den geschlossenen Typ:

Foo`1[System.Int32]

Gibt es eine Möglichkeit, die geschlossenen Typen anzuzeigen, die die Laufzeit basierend auf meinen offenen generischen Typen für mich erstellt hat?

class Foo<T>
{
}

class Program
{
    static void Main(string[] args)
    {
        var tmp = new Foo<int>();
        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());
    }
}

Ich habe auch versucht, alle Typen durch das generische Argument zu finden, in der Hoffnung, den geschlossenen Typ zu entdecken.

class Foo<T>
{
}

class Bar
{
}

class Program
{
    static void Main(string[] args)
    {
        var tmp = new Foo<Bar>();
        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());
    }
}

Dies ist nur um meine Neugier zu befriedigen.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage