c# - 在运行时动态创建具有与其所有者相同类型的字段的类型

标签 c# reflection

所以我目前正在编写在运行时生成对象的代码。很像 This Q&A .

但是,我无法找到有关动态创建嵌入了相同类型的类型的任何信息。像这样的东西:

public class Foo
{
    private Foo _Parent

    public Foo()
    {}

    public Foo Parent
    {
        get { return _Parent; }
        set { _Parent = value; }
    }
}

有没有办法在 C# 中使用反射或发射来做到这一点?

提前致谢。

最佳答案

Today I learned您可以将 TypeBuilder 转换为 Type 以获取要构建的类型的句柄:

TypeBuilder tb = // get from a ModuleBuilder or wherever
Type typeImAboutToBuild = (Type)tb;

FieldBuilder fb = tb.DefineField(
    "_Parent", typeImAboutToBuild, FieldAttributes.Private)

编辑:TypeBuilder 实际上继承 Type,而不是显式隐式 转换操作;你甚至不需要类型转换:

TypeBuilder tb = //whatever
FieldBuilder fb = tb.DefineField("_Parent", tb, FieldAttributes.Private)

关于c# - 在运行时动态创建具有与其所有者相同类型的字段的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13966029/

相关文章:

pointers - 获取没有指针的结构标签

c# - 如何将 PDF 打印到默认打印机以外的其他打印机

c# - UWP 关闭信息亭模式

c# - 如何使用 FiddlerCore 抓取数据?

Java反射和检查异常

c# - Entity Framework 获取包括一些值的属性

c# - 我可以在没有模型绑定(bind)的情况下检查模型状态吗?

c# - 为什么要使用 builder 模式?

c# - 按字符串创建类的实例,但要考虑隐式转换 - C# 反射

scala - 检测Scala对象中的内部对象