如何使ConfigurationManager工作?

时间:2016-02-03 09:40:01

标签: c# .net configurationmanager

我有2个视图(console和wpf)和1个带有程序逻辑的dll。在1 wpf我想设置一些用户设置,然后即使在关闭wpf后也在控制台中使用它们。但关闭wpf后,设置始终会重置。我试图保存一个对象列表,这就是为什么代码也使用MemoryStream,BinaryFormatter等等,但我认为它对ConfigurationManager的功能没有任何影响。

这是我的代码示例:

    public List<CsprojFile> FilesArray
    {
        get
        {
            try
            {
                using (
                    MemoryStream memoryStreams =
                        new MemoryStream(Convert.FromBase64String(ConfigurationManager.AppSettings["filesArray"])))
                {

                    BinaryFormatter binaryFormatter = new BinaryFormatter();
                    return (List<CsprojFile>) binaryFormatter.Deserialize(memoryStreams);
                }

            }
            catch
            {
                return new List<CsprojFile>();
            }
        }
        set
        {
            using (MemoryStream memoryStream = new MemoryStream())
            {
                BinaryFormatter binaryFormatter = new BinaryFormatter();
                binaryFormatter.Serialize(memoryStream, value);

                memoryStream.Position = 0;
                byte[] buffer = new byte[(int)memoryStream.Length];
                memoryStream.Read(buffer, 0, buffer.Length);

                ConfigurationManager.AppSettings["filesArray"] = Convert.ToBase64String(buffer);
            }
        }
    }

1 个答案:

答案 0 :(得分:0)

ConfigurationManager从App.Config应用程序中读取,如果您有两个应用程序,那么您将从两个配置中读取,因为它们是特定于应用程序的。

如果您希望在应用程序之间共享配置,则需要创建两种应用程序访问的某种持久性存储,数据库,您解释的XML文件,或者您可以在特定位置打开配置文件ConfigurationManager

另一种选择是将你想要的设置放在机器配置中,然后两个应用程序都会读取它们,只要它们在同一台机器上运行,我就不会这样说,只是为了完整性而提到它。

使用ConfigurationManager

从已知位置读取配置文件
var config = ConfigurationManager.OpenExeConfiguration(@"\\file\path\here.someExtension");

文档:https://msdn.microsoft.com/en-us/library/ms224437(v=vs.110).aspx 或另一个例子:Loading custom configuration files