2011-02-25 3 views
1

레지스트리 키 값을 직접 가져 와서 속성에 설정하고 있습니다. 키는 프로그램 시작시 열리고 종료시 닫힙니다..NET에서 RegistryKey 값을 직접 가져오고 설정하는 중

public bool AlwaysSyncBeforeRun 
    { 
     get{ return Convert.ToBoolean(MayaRegistryKey.GetValue("AlwaysSyncBeforeRun")); } 
     set { MayaRegistryKey.SetValue("AlwaysSyncBeforeRun", value); } 
    } 

이 속성은 자주 사용하기위한 것이 아닙니다.

이것은 좋은 아이디어입니까?

답변

2

클래스를 사용하는 개발자가 속성 내부에서 일어나는 일과 레지스트리 액세스가 보안과 관련되어 있음을 알지 못할 수도 있으므로 좋은 생각이라고 생각하지 않습니다. 클래스를 사용하는 응용 프로그램에 레지스트리 액세스 권한이없는 경우 속성을 간단하게 가져 오면 예외가 발생합니다.

이 시나리오에서는 속성을 메모리에 저장하고 속성을 채우기위한 Load() 메서드 및 응용 프로그램을 레지스트리에 저장할 준비가 될 때마다 호출 할 수있는 Save() 메서드를 제공하는 것이 좋습니다.

추가 컨텍스트를 제공 할 수있는 .NET 프레임 워크 디자인 가이드 라인에서이 링크 : Choosing Between Properties and Methods

+0

예, 귀하의 제안이 합리적입니다. 더 안전 할뿐만 아니라 더 빠릅니다. 그러나 프로그램이 제대로 종료되지 않으면 사용자가 설정을 잃을 수 있습니다. –

+0

동의하지만이 경우 가장 좋은 방법은 응용 프로그램을 종료하기 전에 항상 모든 설정을 저장하는 좋은 전역 예외 처리기를 사용하는 것입니다. 이는 Windows Forms에서 [ApplicationSettingsBase] (http://msdn.microsoft.com/en-us/library/system.configuration.applicationsettingsbase.aspx) 클래스를 사용하는 것과 비슷합니다. 어쨌든 모든 가능한 나쁜 위치를 예방할 수는 없습니다. –

+0

링크가 작동하지 않습니다. – BitsEvolved

1

빈번한 사용을위한 것이 아닌 경우 왜 계속 사용 하시겠습니까?

성능 향상을 위해 이와 같은 작업을 수행하십시오. 그러나 귀하의 경우에는 자주 사용하지 마십시오. 따라서 키를 열고 값을 읽고 쓸 수 있으며 닫을 것을 제안합니다. 그것은 안전 할 것이다.

+0

내가 여러 설정을 저장하기 위해 동일한 키를 사용하고 열려을 유지하는 이유. –

0

많은 사람들이 재산에 대해 전혀 기능을 사용하지 말아야한다고 말합니다.

프로그램에 대한 참조가 열려있는 동안 레지스트리 키 편집을 시도 했습니까? 나는 시도하지 않았지만 앱이 실행중인 기간 동안 키를 잠그고 있다면 키를 읽고 저장하고 끝에 업데이트하는 것이 더 나을 수도 있습니다.

+0

값을 변경하고 이벤트를 트리거하는 경우 속성에 기능을 추가하는 것이 좋습니다. 일단 당신이 루핑하고, 파일을 만들면, ... 재산에서, 그것은 나쁜 생각입니다. 이 경우 성능 관련 문제가 있다고 생각하지 않습니다. 이렇게하면 예외가 발생할 가능성이 높습니다. 알고 있습니다. 내 프로그램은 자신의 인스턴스에서만 실행되도록 설정되어 있으므로 매우 안전합니다. 좋은 프로그래밍 규칙은 거기에 수표를 넣는 것이 좋습니다. –

관련 문제