看看Activator.CreateInstance方法;這會使用最符合指定參數的構造函數創建指定類型的實例。它的一個例子就是在你的情況下使用會
Activator.CreateInstance("myAssemblyName", "myType")
所以,如果你有以下類
public class Person
{
private string _name;
public Person() { }
public Person(string name)
{
this._name = name;
}
public string Name
{
get { return this._name; }
set { this._name = value; }
}
}
你可以使用類似下面創建一個對象實例:
ObjectHandle handle = Activator.CreateInstance("PersonInfo", "Person");
Person p = (Person) handle.Unwrap();
p.Name = "Samuel";
Console.WriteLine(p);
這將打印「塞繆爾」。在你的情況下,對於每個KeyValuePair
你可以使用上面的實例化相關的對象。
我希望這會有所幫助。
編輯。解決額外的問題。
Dictionary<String, String> someDict = new Dictionary<String, String>();
someDict = GetDictOfKvpFromCsv(); // Get the dictionary from your CSV.
foreach (KeyValuePair<String, String> kvp in someDict)
{
ObjectHandle handle = Activator.CreateInstance(kvp.Key, kvp.Value);
ISomeType t = (ISomeType)handle.Unwrap();
// Do other stuff...
}
您將只能假設CSV值是字符串類型。除非您自己編碼CSV值並針對每種所需類型對這些值進行不同的解析,否則所需的內容是不可能的。使用XML。 – MoonKnight 2013-04-24 07:52:22
我無法將屬性名稱與鍵名映射嗎? – 2013-04-24 08:53:23
我明白你現在在說什麼,對不起。是的,你可以做到這一點。給我一秒鐘我會盡力幫助... – MoonKnight 2013-04-24 08:59:13