.net 以编程方式检查应用程序设置的范围

f87krz0w  于 2023-06-25  发布在  .NET
关注(0)|答案(2)|浏览(157)

如何获取windows应用中的UserScoped设置列表?到目前为止,我已经得到了使用此代码的所有设置的列表:

var SettingItems = Properties.Settings.Default.Properties;
foreach (SettingProperty prop in SettingItems)
{
    var attribs = prop.Attributes;
    //HERE I WANT TO CHECK THE SCOPE OF THE SETTING ITEM ...
}

并且我知道有一个属性包含设置项名称UserScopedSettingAttribute的范围,问题是我无法获取该属性来检查和筛选用户范围的项(而不是应用程序范围的项)
有什么建议吗?

q9rjltbz

q9rjltbz1#

bool IsUserSetting = (from attr in prop.Attributes
                          where (attr.value) is System.Configuration.UserScopedSettingAttribute
                          select attr).Any;
58wvjzkj

58wvjzkj2#

以下方法可用于检查设置是否为用户范围:

private bool IsUserScopedSetting(SettingsProperty prop)
{
    foreach (object att in prop.Attributes.Values)
    {
        if (att is UserScopedSettingAttribute)
        {
            return true;
        }
    }
    return false;
}

要使用该方法,请在// HERE I WANT TO CHECK THE SCOPE OF THE SETTING ITEM ...行之后添加以下行:

if (IsUserScopedSetting(prop))
{
    MessageBox.Show($"'{prop.Name}' is a user setting.");
}

如果你的项目设置定义如下,那么这个代码将显示一个MessageBox,说明 *'UserSetting1'是一个用户设置 *:

相关问题