2008-09-02 5 views
2

고급 구성 폼을 팝업하는 기본 폼이 있는데 여기에는 수십 개의 일치 체크 박스와 콤보 상자가 일부 선택됩니다. 고급 옵션 (활성화/비활성화 할 수있는 확인란, 활성화 된 경우 콤보로 미디어 선택).구성 대화 상자에 많은 수의 인수를 전달하는 가장 좋은 방법

체크 및 콤보 상자의 개별 설정을 대화 상자의 생성자에 전달하면 분명히 다스의 인수가됩니다. 이는 과도한 것으로 보입니다.

내 다른 명백한 옵션은 메인 양식에서이 설정이 큰 IDictionary에 저장되어 있으므로 다른 기본 양식 설정과 함께이 사전을 전달하고 나중에 업데이트 된 값으로 가져올 수 있지만 내 이해 정말 좋은 코딩 실습이되지는 않을 것입니다.

효율적이고 훌륭한 코딩 방법 인이 작업을 수행하는 좋은 방법이 없습니까?

답변

6

개인적으로 값을 저장하는 캐리어 객체를 생성 할

(나는 기분이 일반적인 솔루션은 다른 언어뿐만 아니라에 적용됩니다 있지만이 특정 코드는 C#으로)입니다. 그런 다음 멋진 인텔리 센스를 얻을 수 있으며, 변경 사항은 매우 간단합니다. 또한 매개 변수 값에 대한 사전 조회보다 빠릅니다. 물론 유형 안전성을 얻을 수 있습니다. :)이 같은

0

뭔가 잘되어야합니다 :

MyConfigurationDialog dialog = new MyConfigurationDialog(); 

//Copy the dictionary so that the dialog can't mess with our settings 
dialog.Settings = new Dictionary(existingSettings); 

if(DialogResult.OK == dialog.Show()) { 
    //grab the settings that the dialog may have changed 
    existingSettings["setting1"] = dialog.Settings["setting1"]; 
    existingSettings["setting2"] = dialog.Settings["setting2"]; 
} 
0

나는 롭 쿠퍼에 동의합니다. 구성을 나타내는 클래스를 작성하여 양식의 생성자로 전달하십시오. 이것은 또한 "saveSettings", "LoadSettings"등과 같이 새 "config"클래스에서 메소드를 정의 할 수있게 해줍니다. 그러면 코드가 일반적으로 더 유지 보수 가능해야합니다.

빠르고 쉬운 대안으로, 파일에 저장하는 경우 파일 이름을 전달하고 런타임에 양식을 읽게하십시오.

첫 번째 옵션은 실제로 갈 방법입니다, IMO.

1

당신은 Rob의 솔루션을 사용할 수 있습니다. 그것은 개발을위한 가장 예쁜 것입니다. "이동 통신사 객체"는 전체 IDictionary를 포함 할 수 있으며 intellisense를 돕기 위해 입력 된 속성을 가질 수 있습니다. 속성은 IDictionary를 업데이트 할 수 있습니다. 작업이 끝나면 이동 통신사 객체를 다시 전달하고 IDictionary를 직접 가져올 수 있습니다. 당신의 사전 키/값 쌍 "FirstEnabled"를 한 경우

예를 들어,/부울, 당신이 할 수 있습니다 :

class ContainerObject 
{ 
    public IDictionary<object, object> _dict; 
    public ContainerObject(IDictionary<object, object> dict) 
    { 
     _dict = dict; 
    } 

    public bool FirstEnabled 
    { 
     get { return (bool) _dict["FirstEnabled"]; } 
     set { _dict["FirstEnabled"] = value; } 
    } 
} 

당신은 비공개로 회원 "_dict"를 변경하거나 보호하고 접근 기능을 가질 수있다 네가 원한다면.

관련 문제