c#通过反射获得泛型类的属性和值<二>

前几天写的这个通过反射获得泛型类的属性和值今天在用的时候发现,只操作string太单一了,于是大概修改了下,支持不同类型的操作。如下

public static void ResetPro<T>(T val, Dictionary<System.Type, dynamic> defaluevalue)
    {

        var pros = typeof(T).GetProperties();
        int i = 0;
        foreach (PropertyInfo p in pros)
        {
            if (val.GetType().GetProperty(p.Name).GetValue(val, null) == null)
            {
                System.Type t = val.GetType().GetProperties()[i].PropertyType;
                if (defaluevalue.ContainsKey(t))
                {
                    val.GetType().GetProperties()[i].SetValue(val, defaluevalue[t], null);
                }
            }
            i++;

        }  

调用的话可以这样

 Dictionary<System.Type, dynamic> defalutvalue = new Dictionary<Type, dynamic>();
 defalutvalue.Add( typeof(System.String), string.Empty);
 defalutvalue.Add(typeof(DateTime), System.DateTime.Now);
 defalutvalue.Add(typeof(Int32), 0);
 Product p = new Product();
 ResetPro<Product>(p, defalutvalue);  

c#通过反射获得泛型类的属性和值<二>》上有2条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注