using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using System.Reflection; namespace serialize { public class serialize where T : new() { public static List createList(string file) { List ret = new List(); Dictionary vals = new Dictionary(); string[] lines = File.ReadAllLines(file); string[] header = lines[0].Split(','); foreach (string line in lines.Skip(1)) { string[] data = line.Split(','); for (int i = 0; i < header.Count(); i++) vals[header[i]] = data[i]; ret.Add(createFromDict(vals)); } return ret; } public static T create(string file) { Dictionary vals = new Dictionary(); string[] lines = File.ReadAllLines(file); string[] header = lines[0].Split(','); string[] data = lines[1].Split(','); for (int i = 0; i < header.Count(); i++) vals[header[i]] = data[i]; return createFromDict(vals); } public static string dump(T obj) { Dictionary res = new Dictionary(); string retstring = ""; foreach (FieldInfo f in obj.GetType().GetFields()) { res[f.Name] = (variant)f.GetValue(obj); } foreach (variant v in res.Keys) { retstring += (string)v + ","; } retstring = retstring.Trim(','); retstring += "\n"; foreach (variant v in res.Values) { retstring += (string)v + ","; } return retstring.Trim(',') + "\n"; } public static T createFromDict(Dictionary vals) { T obj = new T(); foreach (KeyValuePair kv in vals) { obj.GetType().GetField(kv.Key).SetValue(obj, (variant)kv.Value); } return obj; } } class User { public variant id; public variant name; public variant username; public override string ToString() { return String.Format("{0} - {1} - {2}", id, name, username); } public static User CreateFromFile(string file) { User u = new User(); string[] col = File.ReadAllText(file).Split(','); u.id = col[0]; u.name = col[1]; u.username = col[2]; return u; } public static User CreateFromFile2(string file) { User u = new User(); string[] col = File.ReadAllText(file).Split(','); int i = 0; foreach (FieldInfo f in u.GetType().GetFields()) { f.SetValue(u, (variant)col[i]); i++; } return u; } } class Program { static void Main(string[] args) { User u = new User(); u.id = 1; u.name = "Nate Adams"; u.username = "adamsna"; Console.WriteLine(u); User u2 = new User(); string[] col = File.ReadAllText("c:/temp/user.txt").Split(','); u2.id = col[0]; u2.name = col[1]; u2.username = col[2]; Console.WriteLine(u2); User u3 = User.CreateFromFile("c:/temp/user2.txt"); Console.WriteLine(u3); User u4 = User.CreateFromFile2("c:/temp/user3.txt"); Console.WriteLine(u4); User u5 = serialize.create("c:/temp/user4.txt"); Console.WriteLine(u5); Console.WriteLine(serialize.dump(u5)); List users = serialize.createList("c:/temp/user5.txt"); foreach (User usr in users) Console.WriteLine(usr); } } }