typeof (T) может возвращать null

При использовании оператора typeof для типа, созданного с помощью TypeBuilder, оператор вернет null.

Мне любопытно, почему это случается и как это предотвратить.


Я начинаю думать, что это ошибка VS в ближайшем окне, но я не совсем уверен. Очень легко сначала обвинить других.

Хорошо ... код для воспроизведения проблемы:

    static void Main()
    {
        AssemblyBuilder assemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly(
            new AssemblyName("MyAssembly"),
            AssemblyBuilderAccess.RunAndSave);
        ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule("MyModule");
        TypeBuilder typeBuilder = moduleBuilder.DefineType("MyType", TypeAttributes.Public, typeof(ArrayList));

        ArrayList o = (ArrayList)Activator.CreateInstance(typeBuilder.CreateType());

        Console.WriteLine(o.GetType().Name);
    }

Если вы поставите точку останова после переменной o и наберете typeof (MyType) в VS Immediate Windows вы столкнетесь с проблемой.

9
задан Pierre Arnaud 20 June 2016 в 04:04
поделиться