您好我的工廠代碼是這樣的。而不是直接存儲在字典中,我想將這些值存儲在app.config文件中。如下所示。抽象工廠添加到字典從配置
public class HandlerFactory
{
private Dictionary<string, IHandler> _handlers = new Dictionary<string,IHandler>();
public HandlerFactory()
{
_handlers.Add("AMOUNT", new AmountValidator());
_handlers.Add("FLOW", new FlowValidator());
}
public IHandler Create(string key)
{
IHandler result;
_handlers.TryGetValue(key, out result);
return result;
}
}
我想將這些設置移動到我的配置文件中,如下所示。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="Indentifiers" type="System.Configuration.AppSettingsSection"/>
</configSections>
<Indentifiers>
<add key="AMOUNT" value="AmountValidator" />
<add key="FLOW" value="FlowValidator" />
</Indentifiers>
</configuration>
我正在做這樣的事情,但我沒有成功。不知道如何添加到字典
NameValueCollection settings = ConfigurationManager.GetSection("Indentifiers") as NameValueCollection;
if (settings != null)
{
foreach (string key in settings.AllKeys)
{
_handlers.Add(key.ToString(), settings[key].ToString()); <-- how to handle here
}
}
'Activator.CreateInstance'應該在這裏有用。 – ChaosPandion 2012-07-27 19:04:08
喂混沌,我在我的主類而不是工廠類調用createInstance。在我的主類中,我正在做這樣的事情'IHandler validator = handle.Create(arInfo [0] .ToString()); (IHandler)Activator.CreateInstance(「Validation」,validator.ToString())。Unwrap();'但我不明白如何將鍵的值轉換爲IHandler類型。即。從我的工廠類中'AmountValidator'到'Ihandler類型的AmountValidator'。你懂我的意思了嗎?你能給些建議麼? – bayyinah 2012-07-28 06:22:20
我認爲你不瞭解工廠的目的。想想第二個的定義。汽車工廠會製作一輛汽車或一輛真正的汽車的藍圖嗎? – ChaosPandion 2012-07-28 06:26:51