如何检查设置中是否存在属性?

How to check if a property exists in Settings?

我曾经在 Visual Studio 中的设计时定义设置的属性,但我想在运行时添加属性。我搜索了Google,找到了这样的方法,

        var s = Properties.Settings.Default;
        var property = new System.Configuration.SettingsProperty("x")
        {
            DefaultValue = -1,
            IsReadOnly=false,
            PropertyType=typeof(int),
            Provider = Properties.Settings.Default.Providers["LocalFileSettingsProvider"],
        };
        property.Attributes.Add(typeof(System.Configuration.UserScopedSettingAttribute), new System.Configuration.UserScopedSettingAttribute());

问题是,我怎么知道 属性 是否存在?在运行时添加之前不会有那个属性。我试图找到一个 Contains() 方法,但没有这样的方法,并且执行下面的代码也不起作用,因为它不仅 return null 而是导致异常。

        var s = Properties.Settings.Default;
        var x = s["x"];
        if (x != null)
        {
        }

Properties 是 SettingsProperty 的集合,因此当您正确转换它时,您可以对类型化集合发出 LINQ 请求。剩下的就很简单了:

  var exists = s.Properties.OfType<SettingsProperty>().Any(p => p.Name == "x");