所以我目前正在编写在运行时生成对象的代码。很像 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/