c# - 在 Reflection.Emit 中使用发射类型作为类型参数

标签 c# generics reflection.emit

[Name("Admin")]
public class TestAdmin : TestUserBase<TestAdmin>
{
    public TestAdmin(Type webDriverType) : base(webDriverType)
    {
    }
}

目前,我有一堆这种形式的类,我想在运行时使用 Reflection.Emit 创建这些类。但是,当我尝试添加父级时遇到了一个问题 - 因为 TestAdmin 类在运行时之前不存在,所以我不知道如何创建

TestUserBase<TestAdmin>

有什么想法吗?

最佳答案

您可以使用 SetParent 设置父类型:

TypeBuilder tb = mb.DefineType("TestAdmin", TypeAttributes.Public);
tb.SetParent(typeof(TestUserBase<>).MakeGenericType(tb));

Type theType = tb.CreateType();

关于c# - 在 Reflection.Emit 中使用发射类型作为类型参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17032898/

相关文章:

c# - 自定义属性未正确添加到 Reflection.Emit 程序集中

.net - TypeBuilder 允许定义两个同名字段

c# - XML 序列化的替代

c# - 使用反射调用具有约束的泛型方法

c# - WinRT 创建一个文件(如果该文件不存在)并知道该文件已创建

java - Java泛型主要是一种在集合元素上强制静态类型的方法吗?

java - 有人可以阐明 Java(6) 中的协变返回类型吗?

c# - Reflection.Emit 在现实世界中的应用

c# - 在 c#.net 中的现有数组中添加新项

c# - 结构大小未反射(reflect) C# 中的正确字节数