2010-02-01 1 views
4

мне нужно определить что-то вроде этого с помощью отражения Выделяют:Как я могу определить два типа ссылающихся друг на друга с помощью IL 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() на обоих концах. Но я не вижу такой вещи.

Каков оптимальный способ решения этой проблемы?

ответ

4

TypeBuilder подкласс Тип: MSDN

Вы можете передать его в DefineProperty.

+0

Вау, я полностью этого не осознавал, спасибо! –