2013-02-10 103 views
0

我是從文本中提取4串一個對象,然後我想創建與它們屬性的對象,使用第一字符串作爲對象名,其餘爲屬性:創建從字符串

public void Load() 
{ 
    string line = File.ReadAllText(path); 
    foreach (var item in line) 
    { 
     string objectname = line.Split(':', '#')[1]; 
     string Name = line.Split('$', ':')[2]; 
     string Number = line.Split(':', '%')[3]; 
     string Addres = line.Split(':', '&')[4]; 

     StringBuilder StringBuilder = new StringBuilder(); 

    } 
} 

我應該使用StringBuilder這個嗎?如何?

+0

'StringBuilder'用於創建_strings_,所以沒有。你需要看看序列化。 – Oded 2013-02-10 13:24:09

回答

2

如果您是指基於動態數據的屬性設置值,則可以使用反射。

假設這是你的類:

public class Contact 
{ 
    public string Name { get; set; } 
    public string Number { get; set; } 
    public string Address { get; set; } 
} 

這是文本文件的可能格式:

 
Name=John$Address=Canada$Number=111 
Number=333$Name=Bob$Address= 

那麼這樣的代碼會遍歷行和創建Contact爲每個實例的基礎取值:

string[] lines = File.ReadAllLines(path); 
foreach (string line in lines) 
{ 
    Contact contact = new Contact(); 
    string[] parts = line.Split('$'); 
    foreach (string part in parts) 
    { 
     string[] temp = part.split('='); 
     string propName = temp[0]; 
     string propValue = (temp.Length > 1) ? temp[1] : ""; 
     contact.GetType().GetProperty(propName).SetValue(contact, propValue, null); 
    } 
} 

在上面的示例中使用這兩行將創建具有給定細節的兩個實例。