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



所以我当前正在编写在运行时生成对象的代码。就像在这个Q& a中一样。

但是,我很难找到有关动态创建具有相同类型的类型的任何信息。类似:

public class Foo
{
    private Foo _Parent
    public Foo()
    {}
    public Foo Parent
    {
        get { return _Parent; }
        set { _Parent = value; }
    }
}

有什么方法可以在C#中使用反射或发射?

预先感谢。

今天,我了解到您可以将TypeBuilder施放到Type上,以获取要构建的类型的处理:

TypeBuilder tb = // get from a ModuleBuilder or wherever
Type typeImAboutToBuild = (Type)tb;
FieldBuilder fb = tb.DefineField(
    "_Parent", typeImAboutToBuild, FieldAttributes.Private)

编辑:TypeBuilder实际上是从Type继承,而不是explicitimplicit转换操作;您甚至不需要演员表:

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

最新更新