首页 > 其他分享 >反射

反射

时间:2023-04-05 18:11:21浏览次数:21  
标签:反射 语言 SqlServerHelper --- Configuration public

反射

反射反射程序员的快乐,反射是无处不在的,封装框架,系统开发,MVC,IOC,ORM都离不开反射。

一、反射/反编译工具/高级语言到计算机语言的历程

  1. 高级语言---编译---dll/exe文件
  2. metadata:元数据清单---记录了dll中包含哪些东西,是一个描述。
  3. IL:中间语言---编译把高级语言编译后得到c#中最真实的言语状态,面向对象语言。
  4. 反编译工具:逆向工程;ILSPY --- DLL/EXE、 --- 反编译回来,c#/IL
  5. 反射: 来自于System.Reflection,是一个帮助类库---可以读取DLL/EXE中metadata和使用metadata + 动态的创建dll/exe --- Emit技术

二、反射创建对象

首先定义一个接口

namespace Business.DB.Interface
{
    /// <summary>
    /// 数据访问类抽象
    /// </summary>
    public interface IDBHelper
    {
        void Query();
    }
}

实现了接口的类

namespace Business.DB.SqlServer
{
    public class SqlServerHelper
    {
        //Nuget:System.Data.SqlClient

        private string ConnectionString = "Data Source=DESKTOP-VUL99EF; Database=CustomerDB; User ID=sa; Password=sa123; MultipleActiveResultSets=True";

        private static string GetConnection()
        {
            //Nuget引入:
            //SetBasePath:Microsoft.Extensions.Configuration.FileExtensions
            //AddJsonFile:Microsoft.Extensions.Configuration.Json 
            var Configuration = new ConfigurationBuilder()
                .SetBasePath(Directory.GetCurrentDirectory())
                .AddJsonFile("appsettings.json", optional: true)
                .Build();
            return Configuration.GetConnectionString("Default");
        }


        public SqlServerHelper()
        {
            Console.WriteLine($"{this.GetType().Name}被构造");
        }

        //public SqlServerHelper(int i)
        //{
        //    Console.WriteLine($"{this.GetType().Name}被构造");
        //}

        public void Query()
        {
            Console.WriteLine($"{this.GetType().Name}.Query");
        }
    }
}

我们开始尝试通过反射创建对象

//传统方式创建对象
IDBHelper dbHelper=new SqlServerHelper();

标签:反射,语言,SqlServerHelper,---,Configuration,public
From: https://www.cnblogs.com/wenlong-4613615/p/17290161.html

相关文章

  • 一个相当详细的Java类反射笔记
    以前老师经常说,Java类反射就是Java中的神仙,一直都十分好奇这到底是个什么东西,下面我们一起来探讨一下吧1、什么是反射技术?动态获取指定类以及类中的内容(成员),并运行其内容。应用程序已经运行,无法在其中进行new对象的建立,就无法使用对象。这时可以根据配置文件的类全名去找对应的字......
  • 反射
    1.反射1.1反射的概述:​ 专业的解释(了解一下):​是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;​对于任意一个对象,都能够调用它的任意属性和方法;​这种动态获取信息以及动态调用对象方法的功能称为Java语言的反射机制。​ 通俗的理解:(......
  • 556系列反射内存卡
    如果您正在寻找一款高效、可靠的内存卡,那么我们的反射内存卡绝对是您的不二选择!我们的5565系列反射内存卡采用最新的PCIe技术,具有极快的读写传输速度,可轻松应对大型文件和高清视频的存储和传输需求。此外,我们的反射内存卡还采用了高品质的闪存芯片和抗震抗压外壳,可保证您的数据安全......
  • 注解和反射
    注解和反射1.反射的三种方式通过对象获得Studentstudent=newStudent();Classclass1=student.getClass();通过forName获得Classclass2=Class.forName("com.kuang.reflection.Student");通过类名.class获得Classclass3=Student.class;2.Java内存分析2.1Java内存......
  • C# 根据主键ID查询数据库的数据 反射和泛型实现
    //引入命名空间usingZhu.ADO.NET.DBProxy;usingZhu.ADO.NET.Models.models;Console.WriteLine("========================================================");Console.WriteLine("============开始测试====================================");Console.Wr......
  • JAVASE:注解与反射笔记
    JavaSE:注解与反射(Annotation&Reflection)​注解和框架是所有框架的底层,如Mybatis,spring。框架的底层实现机制就是注解和反射。注解相比于注释,除了能较为直接的表示出这部分模块的功能,也能实现一定的具体功能。01初识注解1.1什么是注解Annotation是从JDK5.0引入......
  • MOD09A1(500 米地表反射率 8 天合成产品)计算水体指数
    MOD09A1(500米地表反射率8天合成产品)https://lpdaac.usgs.gov/products/mod09a1v006/MOD09A1提供了波段1-7的500米分辨率8天合成的数据产品,投影为正弦曲线投影。每一个MOD09A1的像素包含了8天之内最有可能的L2G观测数值,尽量考虑高观测覆盖、低视角、无云及云的阴影以及......
  • Java注解与反射
    注解(Annotation)注解Annotation是JDK5.0引入的一种注释机制Annotation的作用:不是程序本身,可以对程序作出解释可以被其他程序(比如:编译器等)读取Annotation的作......
  • Java 反射
    我在很久之前写过一次,也都是从网上搬运的知识,这段时间一直在学python,其他的知识就会有遗忘,我再复习一遍。 一.反射的基本概念使用反射机制可以构造类对象,动态获取当前......
  • 通过反射获取泛型
    packageedu.wtbu;importjava.lang.reflect.Method;importjava.lang.reflect.ParameterizedType;importjava.lang.reflect.Type;importjava.util.List;importjava.ut......