C#属性-获取编译时默认值

C#属性-获取编译时默认值,c#,.net,C#,.net,我正在使用C#和Visual Studio的“设置”功能来管理我的应用程序设置。当然,这些问题可以用XML来解决 然而,我想要一种检索我在VisualStudio中设置的编译时默认值的方法 Properties.Settings.Defaults.MyProp 无法实现这一点-它返回从XML中获取的任何内容。有没有一种方法可以保证在开发过程中检索“设置”页面中键入的内容 上下文是我的一些设置非常具体,因此我的应用程序会验证它们以确保它们在参数范围内,如果不在参数范围内,我希望能够故障恢复到默认

我正在使用C#和Visual Studio的“设置”功能来管理我的应用程序设置。当然,这些问题可以用XML来解决

然而,我想要一种检索我在VisualStudio中设置的编译时默认值的方法

Properties.Settings.Defaults.MyProp
无法实现这一点-它返回从XML中获取的任何内容。有没有一种方法可以保证在开发过程中检索“设置”页面中键入的内容


上下文是我的一些设置非常具体,因此我的应用程序会验证它们以确保它们在参数范围内,如果不在参数范围内,我希望能够故障恢复到默认值。

这似乎是获取属性的原始编译时值的唯一途径。可惜它不是强类型的

Properties.Settings.Default.Properties["name"].DefaultValue as string;

设置
类型只是一个自动生成的
内部密封部分类
,因此没有任何理由不能添加一个名为
默认值
的新
静态
属性

// In some file, perhaps called Settings.Defaults.cs?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace YourApplication.Properties
{
   internal sealed partial class Settings
   {
      public static SettingsDefaults Defaults
      {
         get { return _defaults; }
      }

      internal class SettingsDefaults
      {
         public int NumberBetween1And100
         {
            get
            {
               // Or just hardcode it and come here and change it if you change the default value.
               return (int)Settings.Default.Properties["NumberBetween1And100"].DefaultValue;
            }
         }
      }

      private static readonly SettingsDefaults _defaults = new SettingsDefaults();
   }
}
您可以按照问题中所述使用它:
Properties.Settings.Defaults.numberbetween 1和100


这并不完美。例如,如果从设置设计器添加新设置,则必须记住进入此文件并将新属性添加到
SettingsDefaults
类。另外,
Properties.Settings.Default
Properties.Settings.Defaults
的名称非常相似,很可能是bug的来源。

您是否尝试过
Properties.Settings.Default.Reset()
?还是你在寻找个人财产重置?@RonBeyer是的,我可以单独处理basis@Dan我相信,每当对用户范围字段的属性xml文件进行任何更改时,都会将其保存到本地应用程序文件夹中,而原始文件保持不变。您是在问如何读取原始xml吗?另外,如果你的应用程序已经在验证参数,为什么默认值没有存储在代码中?你可以在一个应用程序中有多个设置文件。您只是在使用
默认值。您还可以创建一个类用作设置
提供程序
(设置的
提供程序
属性)。自定义提供程序可以处理单个设置。您还可以在应用程序范围中镜像用户设置。请参阅(以及左侧的相关文档),