2008-09-24 78 views
2

我需要創建一個配置節,它可以將鍵值對存儲在app.config文件中,並且可以將鍵值對添加到運行時,而不管它們是類型。價值保持其原始類型也很重要。我需要延長如下界面需要創建一個動態ConfigurationSection,其中也包含類型

public interface IPreferencesBackend 
{ 
    bool TryGet<T>(string key, out T value); 
    bool TrySet<T>(string key, T value); 
} 

在運行時,我可以這樣說:

My.Foo.Data data = new My.Foo.Data("blabla"); 
Pref pref = new Preferences(); 
pref.TrySet("foo.data", data); 
pref.Save(); 

My.Foo.Data date = new My.Foo.Data(); 
pref.TryGet("foo.data", out data); 

我System.Configuration.Configuration.AppSettings試過,但這個問題,它是存儲字符串數組中的鍵值對。

我需要的是有一個System.Configuration.ConfigurationSection的實現,在那裏我可以控制如何個別設置序列化。我注意到由Visual Studio生成的設置會這樣做。它使用反射來創建所有設置鍵。我需要的是做這個運行時間和動態。

[System.Configuration.UserScopedSettingAttribute()] 
[System.Diagnostics.DebuggerNonUserCodeAttribute()] 
[System.Configuration.DefaultSettingValueAttribute("2008-09-24")] 
public global::System.DateTime DateTime { 
    get { 
     return ((global::System.DateTime)(this["DateTime"])); 
     } 
    set { 
     this["DateTime"] = value; 
     } 
} 

回答

1

一個偉大的文章,這就是你在一個ASCII文本文件中獲取 - 字符串。 :-)

但是,您可以編碼 「值」 字符串包括像一個類型參數:

<key="myParam" value="type, value" /> 

例如:

<key="payRate" value="money,85.79"/> 

然後讓你的應用程序進行轉換..

相關問題