我需要调用SetSettings()
并使用splitSettings
中的3个元素,将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);
}
}
}
你的设置对象的某个实例是否在某处?如果不这样做,尝试这样做是没有意义的。动态地尝试按名称创建该对象的实例将是可行的。那是你正在尝试做什么? – 2011-04-16 19:39:43
或者EncodeAudio方法应该是静态的吗? – joce 2011-04-16 19:50:21
即使它是静态的,我如何从字符串的名称中找到要使用的属性? – jpiccolo 2011-04-16 19:53:44