imho the key question to ask here is:
where/how are the instances of Class1 and Class2 created ?
If they are both created by a third class, there's an easy solution. If Class1 creates Class2, another solution.
Assuming Class2 is either created by Class1, or created by a third class that also creates Class1:
Put a public property in Class2 of type 'Class1' and when the instance of Class2 is created, insert the reference to the instance of Class1 into it:
public Class1 ReferenceToClass2 { get; set; }
public Class1 ReferenceToClass1 { get; set; }
Class2 MyClass2 = new Class2();
MyClass2.ReferenceToClass1 = MyClass1;
MyClass1.ReferenceToClass2 = MyClass2;