[Name("Admin")]
public class TestAdmin : TestUserBase<TestAdmin>
{
public TestAdmin(Type webDriverType) : base(webDriverType)
{
}
}
Currently, I have a bunch of classes of this form that I'd like to create at runtime using Reflection.Emit. However, I'm running into an issue when I attempt to add the parent - since the TestAdmin class doesn't exist before runtime, I don't know how to create
TestUserBase<TestAdmin>
Any ideas?
You can set the parent type using SetParent:
TypeBuilder tb = mb.DefineType("TestAdmin", TypeAttributes.Public);
tb.SetParent(typeof(TestUserBase<>).MakeGenericType(tb));
Type theType = tb.CreateType();
OK. I haven't been able to test this thoroughly, but I think this is possible. Try something like this:
Assuming your generic base class is already defined (i.e., you're not generating TestUserBase<T>
), you should be able to do something like this:
var emittedType = module.DefineType("TestAdmin", TypeAttributes.Public | TypeAttributes.Class);
var baseType = typeof(TestUserBase<>).MakeGenericType(type);
emittedType.SetParent(baseType);
Of course, if TestUserBase<T>
is begin generated, you can use this same logic using MakeGenericType
on the dynamic type TestUserBase<T>
. The SetParent
logic is the same.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With