Я знаю, что это старый вопрос, но я подумал, что я бы бросил свои два цента для хорошей меры. Google привел меня сюда, чтобы он мог привести кого-то еще сюда.
Это подозрительно похоже на циклическую зависимость ... это просто запах кода, когда есть два независимых класса, которые используют / ссылаются друг на друга.
Если вы хотите иметь родительские / дочерние отношения для объектов, подумайте о создании реализации двоичного дерева (или аналогичной) для вашего класса.
Если вы хотите использовать наследование классов, используйте его правильно>
Class2
является базовым классом для Class1
, и ваше объявление Class1
будет public class Class1 : Class2
. Вы можете ссылаться на методы Class2
в Class1
с ключевым словом base
.
Итак, вкратце, этот ответ таков: вам нужно переделать классы, чтобы они лучше подходили к тому, что вы пытаетесь достичь, вместо того, чтобы бороться с компилятором, чтобы сделать что-то более запутанное, чем нужно.
Тем более, что код, с которым вы собираетесь тестировать это, вероятно, обновляет Class1
, а затем запрашивает у этого объекта ссылку на Class2
ссылку для Class1
... что абсолютно бессмысленно.
Append2:
Семантически, Class1
можно переписать следующим образом:
public class Class1
{
Class2 _class2;
public Class1()
:this(new Class2(this))
{
}
public Class1(Class2 class2)
{
_class2 = class2;
}
}
... за исключением того, что это невозможно, потому что :this(new Class2(this))
имеет неправильный синтаксис. Это также то, что вы делаете. Пожалуйста, не надо.