Como armazenar pares chave-valor em configurações do aplicativo em tempo de execução?

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

  •  05-07-2019
  •  | 
  •  

Pergunta

Como dinâmicas pares chave-valor dos objetos ser armazenados em app.config no uso da API de configurações do aplicativo, em tempo de execução?

Eu estive tentando obter minha cabeça em torno, e eu não consigo encontrar nenhum exemplo ou documentação significativa.

I parece que as classes dicionário Net não pode ser serializado em XML para armazená-los em app.config

É a única maneira de fazer isso usando classes serializados XML personalizados, ou existem outras maneiras?

Foi útil?

Solução 2

Depois de algum líquido mais procura, eu encontrei um muito bom (embora muito longa) artigo que descreve no dept o modelo de configuração .Net:

Desvendando os Mistérios do .NET 2.0 Configuration

Eu também encontrei algo muito útil:

seção de configuração Designer

Um visual studio adicionando para projetar visualmente seções de configuração e gerar os arquivos XSD coresponging. Espero que alguém acha isso útil.

Outras dicas

Você deveria ser capaz de fazer algo parecido com isto:

// Open App.Config of executable
System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

// Add an Application Setting with a name Key and a Value stored in variable called Value
config.AppSettings.Settings.Add("Key", Value );

// Save the changes in App.config file.
config.Save(ConfigurationSaveMode.Modified);

sempre pensei que era considerado má prática para mudança app.config durante a execução. O app.config deve ser usado para a instalação e configuração do programa; não para as coisas que são dinâmicos que o aplicativo está realmente modificando.

Sugerir você cria arquivo separado "KeyValue.xml" para objetos dinâmicos.

Dependendo do que exatamente você precisa, você pode tentar System.Collections.ObjectModel.KeyedCollection . Isso só funciona se você pode derivar a chave para um item a partir do próprio item, mas, nesse caso, é bom para esta finalidade.

É um dicionário genérico? Se assim for:

XML Serializable dicionário genérico

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top