An object-oriented and type-safe programming language that has its roots in the C family of languages and includes support for component-oriented programming.
using system.reflection.emit to create type with generictype
i wanna create a type like TypeA
class TypeA
{
List<TypeA> data;
public TypeA()
{
data =new List<TypeA>()
}
}
//here's my code
// the question is i can't the constructor of List<A>
using System.Reflection;
using System.Reflection.Emit;
var assembleBuilder = AssemblyBuilder.DefineDynamicAssembly(new AssemblyName("Dynamic"), AssemblyBuilderAccess.RunAndCollect);
var moduleBuilder = assembleBuilder.DefineDynamicModule("Dynamic.dll");
var typeA = moduleBuilder.DefineType("TypeA");
var dataField=typeA.DefineField("data", typeof(List<>).MakeGenericType(typeA),FieldAttributes.Private);
var ctor=typeA.DefineConstructor(MethodAttributes.Public, CallingConventions.Standard, Type.EmptyTypes);
var ctorIl = ctor.GetILGenerator();
var listctor = typeof(List<>).MakeGenericType(typeA).GetConstructors()[0];
ctorIl.Emit(OpCodes.Newobj, listctor);
ctorIl.Emit(OpCodes.Stfld, dataField);
ctorIl.Emit(OpCodes.Ret);