如果你坚持使用当前的设计(CSV字典),你可以使用ExpandoObject类来获得你想要的东西,创建一个简单的工厂类:
public static class ObjectFactory
{
public static dynamic CreateInstance(Dictionary objectFromFile)
{
dynamic instance = new ExpandoObject();
var instanceDict = (IDictionary)instance;
foreach (var pair in objectFromFile)
{
instanceDict.Add(pair.Key, pair.Value);
}
return instance;
}
}
这个工厂将创建你给它的任何字典的对象实例,即只创建一个方法来创建所有不同类型的对象.像这样用它:
// Simulating load of dictionary from file
var actorFromFile = new Dictionary();
actorFromFile.Add("Id", "1");
actorFromFile.Add("Age", "37");
actorFromFile.Add("Name", "Angelina Jolie");
// Instantiate dynamically
dynamic actor = ObjectFactory.CreateInstance(actorFromFile);
// Test using properties
Console.WriteLine("Actor.Id = " + actor.Id +
" Name = " + actor.Name +
" Age = " + actor.Age);
Console.ReadLine();
希望这会有所帮助. (是的,她出生于1975年)