• 2.反射


    反射:System.Reflection .Net框架提供帮助类库 ,可以动态读取并使用metadata

    Assembly assembly = Assembly.Load("Test");//dll名称 从当前目录加载
    Assembly assembly1 = Assembly.LoadFrom("Test.dll");//带后缀或完整名称
    Assembly assembly2 = Assembly.LoadFile(@"D:Test.dll");//完整路径的加载
    Assembly assembly = Assembly.Load("");//加载dll
    Type type = assembly.GetType("");//获取类型信息
    object ob = Activator.CreateInstance(type);//创建对象
    People people = new People();
    Type typePeople = typeof(People);
    Type typePeopleDTO = typeof(PeopleDTO);
    people.ID = Guid.NewGuid();
    people.Name = "测试";
    people.Age = 3;
    object peopleDTO = Activator.CreateInstance(typePeopleDTO);
    foreach (var prop in typePeopleDTO.GetProperties())
    {
          object value = typePeople.GetProperty(prop.Name).GetValue(people);
          prop.SetValue(peopleDTO, value);
    }
    foreach (var field in typePeopleDTO.GetFields())
    {
          object value = typePeople.GetField(field.Name).GetValue(people);
          field.SetValue(peopleDTO, value);
    }    

    反射可以破坏单例,调用私有方法

    典型:MVC就是通过反射调用方法

    反射的优缺点:

    优点:动态

    缺点:1.写起来复杂;

       2.避开编译器的检查

       3.性能问题

  • 相关阅读:
    论文画图问题
    迁移sql2005到sql2008r2
    JDBC复习要点总结
    巧用 MDC 打出漂亮的日志
    使用 LogCaptor 测试 Logging
    Spring3.0.4 学习与问题总结系列 1开场篇
    初探CSS
    VirtualBox VM下安装CentOS6.4 (高手略)
    How to build runnable JARs with Spring dependencies using Maven
    ARC135 简要题解
  • 原文地址:https://www.cnblogs.com/bjhblogs/p/12650650.html
Copyright © 2020-2023  润新知