2010-06-05 3 views
1

공유하려는 일부 데이터가 포함 된 집계 '기본'클래스가 있습니다. 기본 클래스에는 다른 클래스 멤버도 있습니다. 이 다른 반원들과 데이터를 공유하고 싶습니다. 이 작업을 수행하는 데 올바른/가장 솔직한 방법은 무엇입니까?하위 구성 요소간에 클래스 구성원 데이터 공유


다음과 같이 내가 가진 구체적인 예입니다. 주요 클래스는 .net 형식입니다. 공유 데이터에 액세스해야하는 기본 폼에서 일부 컨트롤 (실제로 컨트롤 내에서 컨트롤)이 있습니다.

Main Form 
- DataX 
- DataY 
- Control1 
-- Subcontrol1 
- Control2 
-- SubControl2 

SubControls 1과 2는 모두 DataX와 DataY에 액세스하려고합니다.

문제는 (커플 링을 줄이기 위해) 더 나은 연습이라고 생각합니다. 하위 컨트롤이 주 폼에 대해 모르거나 하위 폼이 하위 컨트롤에 대해 알지 않아야한다는 것입니다.

메인 폼에 대해 알지 못하는 서브 컨트롤의 경우, 메인 폼이 컨트롤 1과 2 모두에 대한 참조를 전달할 것이고 이는 차례로 참조를 SubControls 1과 2로 전달할 것입니다. 참조. 나중에 DataZ 및 DataW, 컨트롤 3, 4 및 하위 컨트롤 3 및 4를 추가하면 더 많은 참조 전달 코드를 추가해야합니다.

SubControls 1 및 2 멤버 참조를 기본 폼에 제공하는 것이 더 간단 해 보입니다. 그런 식으로 모든 하위 컨트롤은 MainForm.DataX 또는 MainForm.DataY를 요청할 수 있으며 새로운 데이터를 추가 한 경우 번거롭지 않게 하위 컨트롤에서 직접 액세스 할 수 있습니다. 하지만 그것은 새로운 컨트롤이나 서브 컨트롤을 추가 할 때마다 'MainForm'멤버 참조를 설정하는 것을 여전히 포함합니다. 그리고 그것은 나에게 '잘못된'느낌을줍니다.

내 솔루션 중 하나에 만족하지 않는다고 말할 수 있습니다. 더 좋은 방법이 있습니까?

감사

답변

1

당신은 할 데이터 x와 데이터 y 정적 멤버는 방금 내가 인스턴스를 두 개 이상해야합니까

+0

실행하는 기본 폼의 인스턴스가있는 경우이 잘 작동 그들에게 에 액세스 할 수 있습니다 수 있도록 기본 양식, 그래서 정적이 나를 위해 옵션이 아닙니다. –

+0

모든 새 데이터에 대한 새로운 구현을 피하기 위해 배열이나 목록에 모두 넣을 수 있으므로 컨트롤은이 배열에 대한 액세스 만 필요합니다. 하위 컨트롤에 상위 컨트롤에 대한 지식이 있습니까? – kamahl

+0

예,하지만 저는 그렇지 않았을 것입니다. 컨테이너 (아마도 당신이 제안하는 배열)에 데이터를 패키징 할 수있을 것입니다. 감사. –

관련 문제