Существует несколько различных решений для этого в зависимости от ваших потребностей.
Во-первых, удаление зависимости инициализации и установка свойств позже:
public class Class1
{
public int i;
public Class2 class2;
public Class1(int i)
{
this.i = i;
}
}
public class Class2
{
public int i;
public Class1 class1;
public Class2(int i)
{
this.i = i;
}
}
class Program
{
static void Main(string[] args)
{
var c1 = new Class1(1);
var c2 = new Class2(2);
c1.class2 = c2;
c2.class1 = c1;
}
}
Далее один класс создается какдочерний объект другого при создании родителя:
public class Class1
{
public int i;
public Class2 class2;
public Class1(int i1, int i2)
{
this.i = i1;
class2 = new Class2(i2, this);
}
}
public class Class2
{
public int i;
public Class1 class1;
public Class2(int i, Class1 class1)
{
this.i = i;
this.class1 = class1;
}
}
class Program
{
static void Main(string[] args)
{
var c1 = new Class1(1, 2);
var c2 = c1.class2;
}
}