我需要调用SetSettings()
并使用 中的 3 个元素splitSettings
,设置EncodeAudio
为False
. 我该怎么做呢?将对象的属性转换为字符串中的姓名。我意识到我可以用我所有设置的 switch 语句来做,但必须有一种更动态的方式来做这件事。
namespace SettingsLib
{
public class Settings
{
public Boolean EncodeAudio { get; set; }
}
}
namespace Service
{
void SetSettings()
{
string[] splitSettings = { "SettingsLib.Settings", "EncodeAudio", "False" };
// Need to set EncodeAudio to False in SettingsLib.Settings
}
}
是的,我有一个设置实例
说:
Settings settingManager = new Settings();
我想做的是通过使用 splitSettings 的元素将 EncodeAudo 动态设置为 False
settingManager.EncodeAudio = False;
感谢 TBohnen.jnr 的帮助,我得到了这个答案:
public void setProperty(object containingObject, string propertyName, object newValue)
{
foreach (PropertyInfo p in containingObject.GetType().GetProperties())
{
if (p.Name == propertyName)
{
p.SetValue(containingObject, Convert.ChangeType(newValue, p.PropertyType), null);
}
}
}