2014-12-08 5 views
2

저는 현재 응용 프로그램 구성을 관리하고 저장하는 훌륭하고 깨끗한 방법을 찾고 있습니다. 나는 많은 접근 방식과 프레임 워크를 본 적이 아직 내가 본 가장 간단한 아이디어에 따라 때문에 정말 만족 아니에요 :관찰 가능한 객체/동적 인터페이스?

* Store 'some' data 
* Retrieve 'some' data 

이 (의사)처럼 보일 수 있습니다 간단한 키 값 저장소를 :

public T Get<T>(string key); 
public void Save<T>(string key, T value); 

강하게 한 구성 방식을 설명하기 위해에서 파생 수있는 기본 클래스의 세트를 제공하여 구성 개체를 입력 허용하기 때문에 잘 잠시 태클 주위에이되었습니다 System.Configuration 내부의 .NET 구성 프레임 워크에 살고. 그러나이 작업을 수행하려면 많은 작업과 상용구 코드가 필요합니다.

public IConfiguration<TSet> : TSet { 

    void Commit(); 
    void Refresh(); 

} 

public class MyConfigurationSet { 
    public string Value1 { get; set; } 
    public int Value2 { get; set; } 
} 

// usage 
var config = new JsonConfiguration<MyConfigurationSet>(MYPATH); 
config.Value1 = "Hello"; 
config.Commit(); 

그런 일을 가능하게 할 수있는 방법이 있나요 : 내가 마음에있어 무엇

이 같은 것입니다? 이것을하기 위해서, 나는 a) generic 타입으로부터 파생되어야하고 b) 변화를 추적하기 위해 변화를 위해 그 일반적인 타입의 인스턴스를 "관찰"하고, 그런 것들을 인식하지 못한다. 가능합니다 (지금은 입니다. 예를 들어 첫 번째 부분에서는 현재 불가능한 이유가 전혀 없습니다.). 누구나 아이디어있어?

public class JsonConfiguration<T> : IConfiguration<T> 
{ 
} 

완벽하게 허용된다 : 일반적인 유형에서 파생

+0

사용자/응용 프로그램 설정을 저장 했습니까? http://msdn.microsoft.com/en-us/library/aa730869(v=vs.80).aspx –

답변

0

는 문제가되지 않습니다.

지금까지 관찰 한대로 PropertyChanged 이벤트에 등록 할 수 있도록 INotifyPropertyChanged을 구현하는 유형에 제네릭 형식 제약 조건을 적용했습니다. 무작위 변수 할당을 "트랩"할 수는 없으며 클라이언트 코드는이를 사용자에게 알려야합니다.

public class JsonConfiguration<T> : IConfiguration<T> where T:INotifyPropertyChanged 
{ 
}