| using System; using System.Collections.Specialized; using System.Reflection; using System.Web; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { Person person = CreateInstance<Person>("name=dnawo&age=20&birthday=2014-07-23"); Console.WriteLine("{0},{1},{2}", person.Name, person.Age, person.Birthday); Console.ReadKey(); } /// <summary> /// 建立泛型執行個體 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="data"></param> /// <returns></returns> static T CreateInstance<T>(string data) where T : class { T result = Activator.CreateInstance<T>(); NameValueCollection nv = HttpUtility.ParseQueryString(data); PropertyInfo[] properties = typeof(T).GetProperties(); foreach (PropertyInfo prop in properties) { string name = prop.PropertyType.Name; string value = nv[prop.Name]; if (value != null) { if (name == typeof(string).Name) { prop.SetValue(result, value, null); } else if (name == typeof(int).Name) { prop.SetValue(result, int.Parse(value), null); } else if (name == typeof(DateTime).Name) { prop.SetValue(result, DateTime.Parse(value), null); } } } return result; } } public class Person { public string Name { get; set; } public int Age { get; set; } public DateTime Birthday { get; set; } } } |