Я пытаюсь программно определить класс с базовым классом и конструктором, который вызывает базовый конструктор. Частью работы конструктора подкласса является инициализация строки с именем name со значением. Но что бы я ни пробовал, имя остается нулевым. Базовый конструктор работает нормально, потому что некоторые массивы инициализируются и т. д. Typesignature — это строка. Имя поля уже существует в базовом классе.
FieldBuilder fbname = tb.DefineField("name", typeof(string), FieldAttributes.Public);
ILGenerator ctor1IL = ctor1.GetILGenerator();
ctor1IL.Emit(OpCodes.Ldarg_0);
//get base constructor
var bc = tb.BaseType.GetConstructor(System.Type.EmptyTypes);
ctor1IL.Emit(OpCodes.Call, bc);
ctor1IL.Emit(OpCodes.Ldarg_0);
ctor1IL.Emit(OpCodes.Ldstr, typeSignature);
ctor1IL.Emit(OpCodes.Stfld, fbname);
ctor1IL.Emit(OpCodes.Ret);