C#利用反射自己写的一个ModelHelper类

  开发中 很多人都会使用BLL Model这种开发我也是虽然现在有很多自动生成工具能在几秒内生成cs模板但我个人还不是很喜欢我还是喜欢自己个去写这样更能了解自己代码

  不过手动编写时候最讨厌就是GetModel这类思路方法了把datarow数据转换成个Model实在写我头疼很多代码基本上都是直想用反射来写这样个思路方法以后只要个思路方法就能完成Model赋值那样就方便了今天又遇到此类代码了时火大自己写了个思路方法采用反射原理(从BlogEngine里学来)或许这个思路方法比较笨拙或许有其他更好思路方法来实现不过目前是能满足我GetModel需求了也就凑活着放上来希望大家能给我更好建议

  废话不说了 代码如下:

public ModelHelper <T> where T :
  {
    public T ConvertModel(DataRow dr)
    {
      T t = T;
      Type modelType = t.GetType;
      foreach (PropertyInfo p in modelType.GetProperties)
      {
        p.SetValue(t, GetDefaultValue(dr[p.Name], p.PropertyType), null);
      }
       t;
    }
  
    private object GetDefaultValue(object obj, Type type)
    {
       (obj DBNull.Value)
      {
        obj = default(object);
      }
      
      {
        obj = Convert.ChangeType(obj, type);
      }
       obj;
    }
    
  }


  范例:

Model model = ModelHelper<Model>.ConvertModel(DataRow)

  ConvertModel静态思路方法就是转换GetDefaultValue思路方法则是获取object默认值从DataRow里取到有时候是DBNull如果直接赋值话会Throw

  不好地方:

  1、Model类必须和DataRow列名对应

  2、Model类我设定了必须要有析构器

  代码或许不是很理想希望大侠们指点 2

  Email:[email protected]

Tags: 

延伸阅读

最新评论

发表评论