所以我目前正在编写在运行时生成对象的代码。很像This Q&A。
但是,我无法找到有关动态创建嵌入了相同类型的类型的任何信息。类似的东西:
public class Foo
{
private Foo _Parent
public Foo()
{}
public Foo Parent
{
get { return _Parent; }
set { _Parent = value; }
}
}
有没有办法在c#中使用反射或发射?
提前致谢。
答案 0 :(得分:2)
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
继承,而不是explicit
或implicit
转化操作;你甚至不需要演员:
TypeBuilder tb = //whatever
FieldBuilder fb = tb.DefineField("_Parent", tb, FieldAttributes.Private)