Необходимо создать динамический раздел ConfigurationSection, который также содержит тип

StackOverflow https://stackoverflow.com/questions/125470

Вопрос

Мне нужно создать раздел конфигурации, который способен хранить пары ключ-значение в файле app.config, и пары ключ-значение могут быть добавлены во время выполнения независимо от их типа.Также важно, чтобы значение сохраняло свой первоначальный тип.Мне нужно расширить следующий интерфейс

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;
       }
 }
Это было полезно?

Решение 2

Я нашел две замечательные статьи на codeproject.com, которые очень подробно объясняют эти проблемы.

Разгадка тайн конфигурации .NET 2.0 http://www.codeproject.com/KB/dotnet/mysteriesofconfiguration.aspx

Примененные пользовательские настройки http://www.codeproject.com/KB/dotnet/user_settings.aspx?display=PrintAll&fid=1286606&df=90&mpp=25&noise=3&sort=Position&view=Quick&select=2647446&fr=26

Другие советы

У Фила Хаака есть отличная статья о Создание пользовательских разделов конфигурации

Это все, что вы получаете в текстовом файле в формате ASCII - строки.:-)

Однако вы можете закодировать строки "value", чтобы включить параметр типа, например:

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

например:

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

затем попросите ваше приложение выполнить преобразование...

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top