代码之家  ›  专栏  ›  技术社区  ›  David Ebbo

如何使用il emit定义两个相互引用的类型

  •  4
  • David Ebbo  · 技术社区  · 14 年前

    我需要使用反射发射定义类似的内容:

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

    困难在于,当调用typebuilder.defineproperty()时,我需要传递属性返回值的system.type,它还不存在。如果引用只走一条路,那就很容易了,但是走两条路会导致鸡和蛋的问题。

    我希望找到一个采用typebuilder而不是类型的重载,它允许我同时定义两个类,然后在随后的结尾调用typebuilder.createType()。但我没有看到这样的事情。

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

    1 回复  |  直到 14 年前
        1
  •  5
  •   Kennet Belenky    14 年前

    类型生成器是类型的子类: MSDN

    你可以把它传给定义属性。