Pertanyaan Cara menggunakan ConfigurationManager


Saya ingin menggunakan App.config untuk menyimpan beberapa pengaturan. Saya mencoba menggunakan kode berikutnya untuk mendapatkan parameter dari file konfigurasi.

private string GetSettingValue(string paramName)
{
    return String.Format(ConfigurationManager.AppSettings[paramName]);
}

Saya juga menambahkan System.Configuration untuk itu (saya menggunakan kelas terpisah), dan di file App.config saya punya:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
  <appSettings>
    <add key ="key1" value ="Sample" />
  </appSettings>
</configuration>

Tapi saya mendapat kesalahan saat mencoba menggunakannya ConfigurationManager - ConfigurationManager can't exist in such context, tapi saya sudah menambahkan System.Configuration. Atau apakah saya melewatkan sesuatu?

EDIT:

kelas dengan konfigurasi (tampilan penuh)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Configuration;

namespace browser
{
    class ConfigFile
    {
        private string GetSettingValue(string paramName)
        {
            return String.Format(ConfigurationManager.AppSettings[paramName]);
        }
    }
}

EDIT2

Tambahkan tampilannya

enter image description here

Ini berarti masalahnya tidak saat digunakan ConfigurationManger tapi sebelumnya - program "mengatakan" bahwa "tidak tahu elemen seperti itu" karena saya memahami kesalahan - "Element ConfigurationManager" tidak ada dalam konteks seperti itu "

EDIT3

enter image description here

EDIT 4

enter image description here


32
2017-10-07 19:12


asal


Jawaban:


Oke, butuh beberapa saat untuk melihat ini, tetapi tidak ada cara kompilasi ini:

return String.(ConfigurationManager.AppSettings[paramName]);

Anda bahkan tidak memanggil metode di String mengetik. Lakukan saja ini:

return ConfigurationManager.AppSettings[paramName];

Itu AppSettings KVP sudah mengembalikan string. Jika nama itu tidak ada, nama itu akan kembali null.


Berdasarkan hasil edit Anda, Anda belum melakukannya menambahkan Referensi ke System.Configuration perakitan untuk proyek yang sedang Anda kerjakan.


27
2017-10-07 19:20



Saya menemukan beberapa jawaban, tetapi saya tidak tahu apakah itu jalan yang benar. Ini adalah solusi saya untuk saat ini. Fortunatelly itu tidak merusak mode desain saya.

    `
    /// <summary>
    /// set config, if key is not in file, create
    /// </summary>
    /// <param name="key">Nome do parâmetro</param>
    /// <param name="value">Valor do parâmetro</param>
    public static void SetConfig(string key, string value)
    {
        var configFile = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
        var settings = configFile.AppSettings.Settings;
        if (settings[key] == null)
        {
            settings.Add(key, value);
        }
        else
        {
            settings[key].Value = value;
        }
        configFile.Save(ConfigurationSaveMode.Modified);
        ConfigurationManager.RefreshSection(configFile.AppSettings.SectionInformation.Name);
    }

    /// <summary>
    /// Get key value, if not found, return null
    /// </summary>
    /// <param name="key"></param>
    /// <returns>null if key is not found, else string with value</returns>
    public static string GetConfig(string key)
    {
        return ConfigurationManager.AppSettings[key];
    }`

-2
2017-08-18 14:35