【问题标题】:.NET Application Settings -> setting the null string.NET 应用程序设置 -> 设置空字符串
【发布时间】:2011-03-11 16:36:41
【问题描述】:

我应该在 app.config 的 applicationSettings 部分输入什么(在这两种情况下),这样当我阅读 Settings 时,我可以得到以下信息:

  1. Settings.Default.FooString == null
  2. Settings.Default.FooString == string.Empty

? 我想这两种情况都没有办法实现,还是我错过了什么?

不幸的是,需要区分字符串值是 null 还是空,因为这个值进入不同的系统,这对这两个系统有不同的决定。 谢谢


更多信息:

Settings.Designer.cs 会在您每次修改设置选项卡时重新生成。 示例生成的设置是:

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

问题在于生成的 [DefaultSettingValueAttribute("")]。当我使用 [DefaultSettingValueAttribute(null)] 手动更正它时,它可以正常工作,但是,每当我修改设置选项卡上的任何内容时,我都需要这样做,这是不可接受的。

有什么线索吗?

【问题讨论】:

    标签: .net string null settings


    【解决方案1】:

    对于null,您只需省略整个<value /> 元素。

    对于string.Empty,您使用<value /><value></value>

    【讨论】:

    • 和上面的答案一样,你在 applicationsettings 中没有任何 元素
    • @Łukasz Podolak - 我猜@matt-dot-net 和我认为你的意思是appSettings 元素。答案已更新。
    • 如果省略 元素,则会得到 System.Configuration.ConfigurationErrorsException : required attribute 'value' not found.
    【解决方案2】:

    你是对的,没有办法同时实现这两种情况,因为null != String.Empty

    但您可以使用Boolean String.IsNullOrEmpty(String) 来检查这两种情况。

    【讨论】:

      【解决方案3】:

      如果您想要 null,请不要定义 appSetting,如果您想要 String.Empty,请使用 value=""

      【讨论】:

      • 它与 无关,它是
      • 对不起...我认为这是相同的原则。
      猜你喜欢
      • 1970-01-01
      • 2012-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-30
      • 1970-01-01
      • 1970-01-01
      • 2011-09-19
      相关资源
      最近更新 更多