繁体   English   中英

如何使用IL Emit定义彼此引用的两种类型

[英]How can I define two types referencing each other using IL Emit

我需要使用反射Emit来定义这样的东西:

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

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

困难在于,当调用TypeBuilder.DefineProperty()时,我需要传递属性的返回值的System.Type,该值尚不存在。 如果参考只采用一种方式,那将很容易,但两种方式都会导致鸡和蛋的问题。

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

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

TypeBuilder是Type: MSDN的子类

您可以将其传递给DefineProperty。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM