[Name("Admin")]
public class TestAdmin : TestUserBase<TestAdmin>
{
public TestAdmin(Type webDriverType) : base(webDriverType)
{
}
}
Derzeit habe ich eine Reihe von Klassen dieses Formulars, die ich zur Laufzeit mit Reflection.Emit erstellen möchte. Aber ich laufe in ein Problem, wenn ich versuche, die Eltern fügen - da die Testadmin Klasse existiert nicht vor der Laufzeit, ich weiß nicht, wieVerwendung des emittierten Typs als Typparameter in Reflection.Emit
TestUserBase<TestAdmin>
Irgendwelche Ideen zu schaffen?
TypeBuilder tb = mb.DefineType("TestAdmin", TypeAttributes.Public);
tb.SetParent(typeof(TestUserBase<>).MakeGenericType(tb));
Type theType = tb.CreateType();
Haben Sie Probleme speziell, weil das Argument für die grundlegende generische Klasse * diese * Klasse ist? –
Ich glaube, Sie haben ein Huhn und Ei Problem ... Der C# -Compiler kann dies tun, weil es wahrscheinlich nicht Reflection.Emit verwendet, um die IL zu generieren. Ich bin mir nicht sicher, ob es eine Lösung für dieses Problem gibt ... –
Hat make-generic-method den Typ-Builder? Aber tatsächlich erinnere ich mich an einige dornige Hühner-/Ei-Bereiche, mit denen ich Probleme habe. In letzter Zeit verwende ich IKVM-Reflexion, die die gleiche api wie Reflexion hat, aber die viele dieser Bereiche behebt –