好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

泛型和反射

泛型和反射

地球人都知道  构建通用的功能 泛型和反射是必不可少的,然后现在很多人都用ORM实体框架+泛型也可以构建

但其内部也是通过反射实现的。

解开迷雾 见天日吧。

---c#代码

  public   class   Boy
    {
          public   int  BoyId {  get ;  set  ; }
          public   string  BoyName {  get ;  set  ; }
    }

      public   class   Girl
    {
          public   int  GirlId {  get ;  set  ; }  
          public   string  GirlName {  get ;  set  ; }
    }
      class   Program
    {
          static  IDictionary< object ,  object > GetList<T>()   where  T :  class  
        {
            Type modelType  =  typeof  (T);
              //  创建T对象 
            T model =  (T)Activator.CreateInstance(modelType);
              //  T model = Activator.CreateInstance<T>(); 
            Type t =  model.GetType();
              //  获取T对象的所有属性 
            PropertyInfo[] props =  t.GetProperties();
              //  将属性名称作为key,属性值作为value 
            Dictionary< object ,  object > dict =  new  Dictionary< object ,  object > ();
              foreach  (PropertyInfo prop  in   props)
            {
                  //  获取属性的名称 
                 string  propName =  prop.Name;

                  //  为model对象的pro属性设置值
                  //  如果此属性类型是int就赋值10 
                 if  (prop.PropertyType== typeof  (Int32))
                {     //  在实际开发中 一般用 DataRow获取数据库相应的字段值如 dr[propName] 
                    prop.SetValue(model,  10 ,  null  );
                }
                  else   //  如果此属性类型 不是 int就统一赋值"aaa" 
                 {
                    prop.SetValue(model,   "  aaa  " ,  null  );
                }
                  //  获取model中是属性值 
                 object  propValue=prop.GetValue(model,  null  );
                dict.Add(propName,propValue.ToString());
            }
              return   dict;
        }
          static   void  Main( string  [] args)
        {

              foreach  ( var  item  in  GetList<Boy> ())
            {
                Console.WriteLine(item.Key + "  :  " + item.Value);
            }
            Console.WriteLine(  "  success  "  );
            Console.ReadKey();
        }
    } 

---运行结果

---泛型约束

 

 http://www.cnblogs.com/zjflove/archive/2013/01/07/2849508.html

作者: Leo_wl

    

出处: http://www.cnblogs.com/Leo_wl/

    

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

版权信息

查看更多关于泛型和反射的详细内容...

  阅读:43次