【发布时间】:2015-06-21 23:58:47
【问题描述】:
我有以下代码,它从我的 App.config 中获取一些值并尝试使用它们来填充类的属性。
foreach (string ReferenceKey in Utilities.CSVToList(ConfigurationManager.AppSettings[source + ":Keys"]))
{
if (ConfigurationManager.AppSettings[ReferenceKey] != null && Incoming_Values.ContainsKey(ConfigurationManager.AppSettings[ReferenceKey]))
{
PropertyInfo info = MyCustomClass.GetType().GetProperty(ReferenceKey.Split(':')[1]);
info.SetValue(MyCustomClass, Incoming_Values[ConfigurationManager.AppSettings[ReferenceKey]]);
}
else
{
return null;
}
}
我遇到的问题是,显然我从配置文件中获得的 KVP 都将是字符串类型,但类的属性是强类型的。我正在尝试将值和类“松散耦合”,但我遇到了一个问题,即属性不是字符串(例如,它是 datetime 或 int 甚至是我自己的类)。
有人知道我会如何处理这样的事情吗?我应该建立一个翻译类还是什么?
【问题讨论】:
-
你看过
Convert.ChangeType吗? -
我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。
标签: c# reflection loose-coupling