2013-02-10 102 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); 
    } 
} 

在上面的示例中使用这两行将创建具有给定细节的两个实例。