加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 在应用程序之间共享设置

发布时间:2020-12-15 07:49:10 所属栏目:百科 来源:网络整理
导读:我有多个.NET程序集,它们都需要共享常用的用户设置,如首选项,用户名等.一个是 WPF应用程序,另一个是控制台应用程序,第三个是Office加载项.所有这些设置都是用户范围. 只有WPF应用程序需要能够更改设置.其余的只是读了他们. 理想情况下,我想使用.NET配置框架.
我有多个.NET程序集,它们都需要共享常用的用户设置,如首选项,用户名等.一个是 WPF应用程序,另一个是控制台应用程序,第三个是Office加载项.所有这些设置都是用户范围.

只有WPF应用程序需要能够更改设置.其余的只是读了他们.

理想情况下,我想使用.NET配置框架.我不知道如何做到这一点.如果我在WPF应用程序中添加设置,其他应用程序如何找到user.config文件?

创建类库更容易,并使用IsolatedFileStorage并序列化我的设置?

任何建议将不胜感激.

解决方法

您可以实现自定义设置类,继承 ApplicationSettingsBase.作为一个好的开始,您可以将默认用户设置文件添加到示例项目(右键单击项目 – >属性 – >设置 – >此项目不包含一个默认设置文件,点击这里创建一个.)添加用户范围设置并调查设计器生成的Settings.Designer.cs文件的结构:
namespace ConsoleApplication1.Properties {


    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator","11.0.0.0")]
    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {

        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));

        public static Settings Default {
            get {
                return defaultInstance;
            }
        }

        [global::System.Configuration.UserScopedSettingAttribute()]
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
        [global::System.Configuration.DefaultSettingValueAttribute("John Doe")]
        public string Name {
            get {
                return ((string)(this["Name"]));
            }
            set {
                this["Name"] = value;
            }
        }
    }
}

在您的自定义实现中,您不会受限于设计者生成的访问修饰符,因此您可以使用内部设置器将Settings类实现为内部,只对所需的程序集可见,或符合您的需要.

当然,您可以随时实现自定义序列化/反序列化机制,但是您将失去ApplicationSettingsBase的Updater,Reload和Reset方法提供的功能.如果你不需要这些,这可能是更干净的做法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读