Сегодня я пытался осмыслить неизменяемые объекты, которые ссылаются друг на друга. Я пришел к выводу, что это невозможно сделать без использования ленивых вычислений, но в процессе я написал этот (на мой взгляд) интересный код.
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 в состоянии, которое еще не полностью сконструировано и включает потоки. Почему это вообще действительно? Есть ли другие способы наблюдать за состоянием объекта, который не полностью сконструирован?