2011-09-18 2 views
0

이 포함어떻게 외부에 내부 포함 된 클래스 버블 부울을에 내가 3 개 수업을 클래스

것이 가장 좋은 방법은 C의 foo는에서의 플래그 '사실'을 설정 무엇
class A 
{ 
    public B b = new B();  
    public bool flag {get; set;} 
} 

class B 
{ 
    piblic C c = new C(); 
} 


class C 
{ 
    public void foo() 
    { 
    //iterates a dataTable with column "someBoolCondition" 
    // I want to set A's bool to true, after the first record that has 'true' in column 
    //"someBoolCondition". Thus is thought to avoid bool memebers in each class. 
    } 
} 

?

TIA

+1

몇 가지 코드로 설명을 보여줄 수 있습니까? –

+0

'B'가'A'의 중첩 클래스인지'A'는'B' 타입의 객체인지,'B'와'C' 사이의 관계도 마찬가지입니다. –

답변

1

C가 자신의 bool을 변경할 때마다 C가 이벤트를 실행할 수 있습니다. 귀하의 A는 이벤트를 구독하고 자체적으로 업데이트 할 수 있습니다. 또한 A와 B와 C에 추상화 된 인터페이스를 전달하여 변경 사항을 직접 푸시 할 수 있습니다.

0

또 다른 해결책은 가장 간단한 양식의 아키텍처 관점이지만 특정 사례에서 허용되는지 분명하지 않은 것은 A 클래스에 static 속성을 갖는 것입니다.

public class A 
{ 
    private static bool failed = false; 
    public static bool Failed {get {return failed;} set {failed=value;}} 
} 

어딘가에 당신의 foo는의 코드() 함수에서

:

foo(...) 
{ 
    //failure happens! 
    A.Failed = true; 
} 

이 쉽고 분명하지만, 당신이보기의 건축 포인트를 앱에서이를 허용 있다면 달려있다.

희망이 도움이됩니다.