C# 如何使用IL Emit定义相互引用的两种类型

C# 如何使用IL Emit定义相互引用的两种类型,c#,reflection.emit,C#,Reflection.emit,我需要使用反射发射定义如下内容: public class Foo { public Bar Bar { get; set; } } public class Bar { public Foo Foo { get; set; } } 困难在于调用TypeBuilder.DefineProperty()时,我需要传递属性返回值的System.Type,该值目前还不存在。如果引用只指向一个方向,这将是很容易的,但同时指向两个方向会导致鸡和蛋的问题 我希望找到一个重载,它使用一个T

我需要使用反射发射定义如下内容:

public class Foo {
    public Bar Bar { get; set; }
}

public class Bar {
    public Foo Foo { get; set; }
}
困难在于调用TypeBuilder.DefineProperty()时,我需要传递属性返回值的System.Type,该值目前还不存在。如果引用只指向一个方向,这将是很容易的,但同时指向两个方向会导致鸡和蛋的问题

我希望找到一个重载,它使用一个TypeBuilder而不是一个类型,这样可以让我同时定义两个类,然后在最后对这两个类调用TypeBuilder.CreateType()。但我没有看到这样的事情


解决这个问题的正确方法是什么?

TypeBuilder是类型的子类:

您可以将其传递给DefineProperty