I need to create a class dynamically. Most things work fine but i\'m stuck in generating the constructor.
AssemblyBuilder _assemblyBuilder =
AppDomai
I think the problem is that you're trying to call the constructor of the open generic type GenericType, but you need to call the constructor of the closed type BaseClass. The solution to the seems simple:
var baseCtor = baseType.GetConstructor(
BindingFlags.NonPublic | BindingFlags.Instance, null,
new[] { typeof(string) }, null);
The problem is that this doesn't work and throws NotSupportedException. So, it seems getting the constructor of a generic type, where one of the parameters is a TypeBuilder is nut supported.
Because of that, I think what you want is not possible using Reflection.Emit, unless there is some hack to work around this.
EDIT: A-HA! I had to dive deep into Reflection.Emit in Reflector (although looking at the right place in the documentation would have worked too), but I found it: there is a special method exactly for this: the static TypeBuilder.GetConstructor(). So this should work:
var baseNonGenericCtor = baseNotGenericType.GetConstructor(
BindingFlags.NonPublic | BindingFlags.Instance, null,
new[] { typeof(string) }, null);
var baseCtor = TypeBuilder.GetConstructor(baseType, baseNonGenericCtor);