我需要調用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