繁体   English   中英

Visual Studio Settings.settings文件

[英]Visual Studio Settings.settings file

有没有一种在运行时在Settings.settings文件中创建新设置的方法?

例如,我想从一个类函数写入设置文件,并从另一个类函数读取该值。 不,我不想传递这些值。

  • 我知道如何从Settings.settings文件中获取值(值= Properties.Settings.Default.XXX)
  • 我知道如何更新现有值(Properties.Settings.Default.XXX = newValue; Properties.Settings.Default.Save())

我想知道如何在运行时将“名称”,“类型”,“范围”和“值”添加到Settings.settings文件中。

任何建议,将不胜感激!

谢谢,伊瓦尔

问题

我相信Visual Studio在设计应用程序设置和值时会生成代码,因此在运行时这将不容易,而且最糟糕的是没有设计者。 但是,有时您可以在运行时调用设计功能。

您会注意到,后面的代码具有您在设计器中创建的C#属性。 例如,我添加了以下设置:

Age [int]  30. 

后面的代码已生成:

[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("30")]
public int Age {
   get {
       return ((int)(this["Age"]));
   }
   set {
       this["Age"] = value;
   }
}

(代码生成是为什么您使用强类型设置的原因)

我不确定您是否可以在运行时实现同样的效果。 您将不得不生成代码并将其动态地反馈给JIT编译器或类似的东西。 或者,也许是我对设置的有限了解不知道的另一种方法。

建议/解决方法

我建议您找出一种更轻松的方法,而不是跳过篮球。 例如,设置一个可序列化的收集类型,以便它可以存储多个值。

然后,例如,您可以在一种设置下存储多个年龄:

Ages  [System.Collections.ArrayList]  {add multiple values programatically}

您可能最终会用C#代码来管理它,如下所示:

System.Collections.ArrayList list = new System.Collections.ArrayList();
list.Add("1");
list.Add("30");
Properties.Settings.Default.Ages = list;
Properties.Settings.Default.Save();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM