2016-08-10 7 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() 
    { 
    } 
} 

、私はクラスBのクラスAのオブジェクトを作成し、A.
にBの現在のオブジェクトを渡しています、私は3つの質問
1を持っている両方のクラス間の循環依存関係がありますか?
2.デザインのにおいですか?
3.もしそれがデザインのにおいなら、それを解決するには?C#の循環依存性、それはデザインのにおいですか?特定のシナリオで

+0

この質問は[コードレビューに適しかもしれません](http://codereview.stackexchange.com/)より、ここにあります。 – bassfader

答えて

1

可能であれば、循環的な依存関係を回避することで、ほとんどの問題はよりよく解決されると思います。 Aとして

BMb機能にのみ関心で、オブジェクト自体には、環状の依存関係のない問題のための簡単な解決策は以下のようになりません。

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() 
    { 
    } 
}