現在の設計 (CSV + 辞書) に固執する場合は、ExpandoObject クラスを使用して探しているものを取得し、単純なファクトリ クラスを作成できます。
public static class ObjectFactory
{
public static dynamic CreateInstance(Dictionary<string, string> objectFromFile)
{
dynamic instance = new ExpandoObject();
var instanceDict = (IDictionary<string, object>)instance;
foreach (var pair in objectFromFile)
{
instanceDict.Add(pair.Key, pair.Value);
}
return instance;
}
}
このファクトリは、与えられたディクショナリのオブジェクト インスタンスを作成します。つまり、さまざまな種類のオブジェクトをすべて作成するメソッドは 1 つだけです。次のように使用します。
// Simulating load of dictionary from file
var actorFromFile = new Dictionary<string, string>();
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年生まれです)