3

所以我目前正在编写在运行时生成对象的代码。就像在这个问答中一样。

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

public class Foo
{
    private Foo _Parent

    public Foo()
    {}

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

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

提前致谢。

4

1 回答 1

2

今天我了解到你可以将 aTypeBuilder转换为 aType来处理它要构建的类型:

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

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

编辑:TypeBuilder实际上继承Type,而不是这是一个explicitorimplicit转换操作;你甚至不需要演员表:

TypeBuilder tb = //whatever
FieldBuilder fb = tb.DefineField("_Parent", tb, FieldAttributes.Private)
于 2012-12-20T08:47:08.113 回答