我是靠谱客的博主 雪白钢笔,最近开发中收集的这篇文章主要介绍反射及反射的高级应用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

反射:(1)核心:动态操作程序集(根据元数据)

 

举例:

static void Main(string[] args)

{

   Do(new { Id=1,Name="Hello"});

   Console.ReadKey();

}

private static void Do(object p)

{

   //什么是反射

   //动态操作程序集(根据元数据)

   var props=p.GetType().GetProperties();

  

   foreach(var item in props)

   {

      Console.WriteLine(item.Name+"--"+item.GetValue(p));

   }

}

 

namespace 反射高级用法

{

    class Program

    {

        static void Main(string[] args)

        {

            using(SqlConnection connection =new SqlConnection(""))

            {

                using(SqlCommand command = connection.CreateCommand())

                {

                    command.CommandText = "";

                    connection.Open();

                    using(SqlDataReader reader = command.ExecuteReader())

                    {

                        if (reader.HasRows)

                        {

                            while (reader.Read())

                            {

                                Person p = MapEntity<Person>(reader);

                            }

                        }

                    }

                }

            }

            Console.ReadKey();

        }

        private static T MapEntity<T>(SqlDataReader reader)where T : new()

        {

            var props = typeof(T).GetProperties();

            var p = new T();

            foreach(var prop in props)

            {

                if (prop.CanWrite)

                {

                    //尝试根据属性名称获取reader中的值

                    //根据列名获取列序号

                    var index = reader.GetOrdinal(prop.Name);

                    //取值

                    var value = reader.GetValue(index);

                    //将值放入对象上

                    prop.SetValue(p, Convert.ChangeType(value, prop.PropertyType));

                }

            }

            return p;

        }

        class Person

        {

            public int Id { get; set; }

            public string Name { get; set; }

        }

    }

}

最后

以上就是雪白钢笔为你收集整理的反射及反射的高级应用的全部内容,希望文章能够帮你解决反射及反射的高级应用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部