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
我该如何做到这一点?
您不能完全按照自己的意愿编写代码,也没有语法糖可以让您接近所需的语法。
这通常通过使用字典来实现。不确定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);