2013-01-19 3 views
3

config 또는 일종의 프로필을 읽고 쓸 수있는 lib가 있습니까?C에서 사용자 지정 구성 읽기 및 쓰기 #

app.config에 대해 이야기하는 것이 아니라 ol.ini 파일과 유사한 custom.config와 더 비슷합니다. lib/functions에 내장되어있어 프로필을 읽고 쓸 수 있습니다.

나는 물론 내 자신을 쓸 수 있지만, 몇 가지 일반적인 LIB 또는이 작업을 수행 할 수있는 방법이 존재하는지 알고 싶습니다 ...

나는 사용자 정의 설정 섹션에 대해 알고 있지만 그 길을하지 않으려는 것입니다.

해결책

내가 찾고있는 것을 찾았습니다. 이것은 작동합니다 :

http://www.codeproject.com/Articles/14465/Specify-a-Configuration-File-at-Runtime-for-a-C-Co

답변

8

은 내가 class로 내 사용자 지정 설정을 한 후 설정 값을 읽고 쓰기 위해 XML serializer를 사용합니다.

public class MyConfig 
{ 
    const string configPath = @"..."; 

    public string Setting1 { get; set; } 
    ... 

    public static MyConfig Load() 
    { 
    var serializer = new XmlSerializer(typeof(MyConfig)); 
    using (var reader = new StreamReader(configPath) 
     return (MyCOnfig) serializer.Deserialize(reader); 
    } 

    public void Save() 
    { 
    var serializer = new XmlSerializer(typeof(MyConfig)); 
    using (var writer = new StreamWriter(configPath) 
     serializer.Serialize(writer, this); 
    } 
+0

예. 그것이 바로 내가하려는 일입니다. 그러나 이런 유형의 일은 그 곳곳에서 행해지는 것처럼 보일 것입니다. app.config에서 사용자 지정 구성 섹션이있는 응용 프로그램을 읽었습니다. 고객 구성 섹션은 스레드 된 클래스의 여러 인스턴스에서 읽는 다중 정의를 가질 수 있습니다. 나는 각각의 스레드가 동일한 app.config에 쓰려고하기 때문에 사용자 정의 구성 섹션을 사용하는 데 문제가 있습니다. 각 스레드가 자체적으로 구성을 정의하는 것을 선호합니다. 하지만 여전히 app.config에서 몇 가지 기본 설정을 읽으십시오. – Arcadian

+0

나는 작동 할 해결책을 찾았습니다 : http://www.codeproject.com/Articles/14465/Specify-a-Configuration-File-at-Runtime-for-aC-Co – Arcadian

+0

해결 방법이 도움이된다면 저에게 잘보십시오. 하지만 app.config 파일을 사용하지 말라고 말한 적이 있습니다. –

0

당신이 필요로하는 모든이 (오래된 .INI 또는 .CFG 파일과 같은) 정말 간단한 키 - 값 쌍, ApplicationData.Current에서도 로컬 스토리지있을 경우 : 그러나이 연결되어

ApplicationData.Current.LocalSettings.Values["test"] = "Setting Value"; 
string t = (string)ApplicationData.Current.LocalSettings.Values["test"]; 

하나의 응용 프로그램에 다중 스레드/다중 인스턴스 문제를 얼마나 잘 처리 할 것인지 잘 모르겠습니다.

0

왜 그냥 설정 디자이너 (Settings.settings 파일을 프로젝트에 사용 하시겠습니까?

0

사람이 (dll을 어셈블리와 같은 이름의 설정 파일이 인스턴스에서) 사용자 정의 설정 파일의 변경 사항을 저장할 필요가없는 경우 :

ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap(); 
fileMap.ExeConfigFilename = Assembly.GetExecutingAssembly().GetName().Name + ".dll.config"; 
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None); 

//... make modification (as you would for any app.config, etc...) 

config.Save(ConfigurationSaveMode.Modified);