c#如何将一个var与另一个var连接起来,以指向应用程序SettingsName

本文关键字:var 起来 连接 SettingsName 应用程序 另一个 一个 | 更新日期: 2023-09-27 18:27:55

伪代码:

using wLog.Properties;
var sName = frmControlProp[cn].SettingName;  
var pSettings = Properties.Settings.Default + sName;  

sName值等于,例如,Password。我希望pSettings等于Properties.Settings.Default.Password
我该如何做到这一点?

c#如何将一个var与另一个var连接起来,以指向应用程序SettingsName

您不能完全按照自己的意愿编写代码,也没有语法糖可以让您接近所需的语法。

这通常通过使用字典来实现。不确定Deafult是什么类型,但假设它是某种IDictionary代码:

var pSettings = Properties.Settings.Default[settingName];  

另一种选择是使用反射并按名称获取属性-在C#中使用反射从字符串中获取属性值,来自该问题的示例:

public static object GetPropValue(object src, string propName)
{
    return src.GetType().GetProperty(propName).GetValue(src, null);
}
 var pSettings = (string)GetPropValue(Properties.Settings.Default, settingName);

Properties.Settings.Default将返回Properties.Settings的一个实例,该实例将是ApplicationSettingsBase的一个子类。它有一个带有string密钥的索引器,因此您可以使用:

string name = frmControlProp[cn].SettingName;
object setting = Properties.Settings.Default[name];

请注意,如果您知道(并希望使用)您感兴趣的设置的类型,则需要强制转换。例如:

string setting = (string) Properties.Settings.Default[name];

还要注意,如果该设置不存在,则会抛出一个SettingsPropertyNotFoundException。您可以使用PropertyValues属性来获取所有值,并检查是否存在您感兴趣的值。

使用反射

查看类型类

using wLog.Properties;
var sName = frmControlProp[cn].SettingName;
var type = Properties.Settings.Default.GetType();
var pSettings = type.GetField(sName).GetValue(Properties.Settings.Default);