2016-08-10 2 views
-1
class A 
{ 
    public B b { get; set; } 
    public void Ma() 
    { 
     b.Mb(); 
    } 
} 

class B 
{ 
    B() 
    { 
     A a = new A(); 
     a.b = this; 
    } 
    public void Mb() 
    { 
    } 
} 

in bestimmten Szenario, ich schaffe Objekt der Klasse A in der Klasse B und Leiten von Strom Objekt von B in A.
Ich habe 3 Fragen
1. Gibt es zyklische Abhängigkeit zwischen den beiden Klassen?
2. Ist es Design-Geruch?
3. wenn es Design-Geruch ist, wie man es löst?zyklische Abhängigkeit in C#, ist es Design-Geruch?

+0

Diese Frage besser geeignet sein könnte [Code Review ] (http://codereview.stackexchange.com/) als hier auf SO. – bassfader

Antwort

1

Ich denke, die meisten Probleme werden besser gelöst, indem zyklische Abhängigkeiten vermieden werden - wenn möglich.

Als A interessiert sich nur für die Mb Funktion von B und nicht im Objekt selbst, eine einfache Lösung für Ihr Problem ohne zyklische Abhängigkeiten wäre:

class A 
{ 
    public Action BAction { get; set; } 
    public void Ma() 
    { 
     if (BAction != null) 
      BAction(); 
    } 
} 

class B 
{ 
    B() 
    { 
     A a = new A {BAction = Mb}; 
    } 
    public void Mb() 
    { 
    } 
} 
Verwandte Themen