public A(ICanBeUsedOnlyByA a)
 {
     A = a;
 }
 public B(ICanBeUsedOnlyByB b)
 {
     B = b;
 }