Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Visual Studio设置.Settings文件_C#_Visual Studio_Settings.settings - Fatal编程技术网

C# Visual Studio设置.Settings文件

C# Visual Studio设置.Settings文件,c#,visual-studio,settings.settings,C#,Visual Studio,Settings.settings,是否有办法在运行时在Settings.Settings文件中创建新设置 例如,我想从一个类函数写入设置文件,然后从另一个类函数读取该值。不,我不想传递这些值 我知道如何从Settings.Settings文件中获取值 (值=Properties.Settings.Default.XXX) 我知道如何更新现有值 (Properties.Settings.Default.XXX=newValue;Properties.Settings.Default.Save()) 我想知道如何在运行时将“名称

是否有办法在运行时在Settings.Settings文件中创建新设置

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

  • 我知道如何从Settings.Settings文件中获取值 (值=Properties.Settings.Default.XXX)
  • 我知道如何更新现有值 (Properties.Settings.Default.XXX=newValue;Properties.Settings.Default.Save())
我想知道如何在运行时将“名称”、“类型”、“范围”和“值”添加到Settings.Settings文件中

如有任何建议,将不胜感激

谢谢, Ivar

问题 我相信VisualStudio在设计应用程序设置和值时会生成代码,因此在运行时,如果没有设计器,这是不容易的,最糟糕的情况是不可能的。但是,有时您可以在运行时调用设计功能

您会注意到代码隐藏具有您在设计器中创建的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();

是的,但是我需要在我的Settings.Settings文件中添加一个名为Age的预定义设置,对吗?您真正想做什么?就让一个方法告诉另一个?让一个方法告诉另一件事,但有一个未指定的时间延迟?在运行时保存数据,以便以后可以读取,即使程序退出后也是如此?@apollodude217:是的,我想保存数据,但要保存到Settings.Settings文件中。我想读取和写入设置文件中的字段。我不想在函数之间传递值