diff --git a/serialize.cs b/serialize.cs new file mode 100644 index 0000000..ec1b83b --- /dev/null +++ b/serialize.cs @@ -0,0 +1,145 @@ +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); + } + } +}