Неизменяемые объекты, которые ссылаются друг на друга?

Сегодня я пытался осмыслить неизменяемые объекты, которые ссылаются друг на друга. Я пришел к выводу, что это невозможно сделать без использования ленивых вычислений, но в процессе я написал этот (на мой взгляд) интересный код.

public class A
{
    public string Name { get; private set; }
    public B B { get; private set; }
    public A()
    {
        B = new B(this);
        Name = "test";
    }
}

public class B
{
    public A A { get; private set; }
    public B(A a)
    {
        //a.Name is null
        A = a;
    }
}

Что мне интересно, так это то, что я не могу придумать другого способа наблюдать за объектом типа A в состоянии, которое еще не полностью сконструировано и включает потоки. Почему это вообще действительно? Есть ли другие способы наблюдать за состоянием объекта, который не полностью сконструирован?

76
задан user 20 July 2012 в 04:52
поделиться