首页 > 编程语言 >C#反射技术(高级技术)

C#反射技术(高级技术)

时间:2024-10-19 09:22:04浏览次数:7  
标签:反射 exe 语言 C# 技术 dll 编译器 IL metadata

一‘、介绍C#语言的两次编译

1:C#语言->编译器编译exe/dll(微软的中间语言IL)->当启动exe文件时(JIL编译器,立即编译IL,变成公共言运行时(CLR))->根据电脑操作系统,编译成机器码

2:IL也是一种面向独享语言,但不好阅读

3:metadata:元数据(数据清单)描述了DLL/exe里各种信息

编译器编译exe/dll除了IL还有metadata,当启动exe文件时,JIL编译器先读取metadata(清单描述程序集(dll/exe)里的命名控件,里有多少个类,类中有多少个属性,类中有多少个方法,类中有多少个字段等),JIL编译器编译IL会跟清单进行比对,吻合就正常使用

二、托管代码和非托管代码区别

托管代码:在CLR管理之下运行的程序指令代码(MSIL指令)

非托管代码:仅针对特定操作系统而生成的CPU机器指令

公共语言运行库(CLR)由两部分组成

CLS(Common Language Specification);公共语言规范,解决不同开发语言之间语法问题

CTS(Common Type System):用于系统类型,解决不同开发语言之间的数据类型差异

三、反射(Reflection)

1:概念:通过使用一个“程序集”(exe/dll)把我们要使用的类的“命名空间、类名”通过“字符串”方式,使用反射技术,从而的得到这个类的对象。

记住:我们想使用一个类的对象,不见得非得通过直接new的方式,也可以通过“反射”方式得到。

2:引用System.Reflection 命名控件,它是Net.Framework提供的类库,使用程序集类:Assembly,可以读取和使用metadata

3:步骤如下

a、先定义一个人的接口

namespace ConsoleApp2
{
    //义一个人的接口
    public interface People
    {
        void Work();

        void Sleep();
    }
}

b、定义一个Student类和Teacher类,继承People类,并实现People类规定的方法

namespace ConsoleApp2
{
    public class Student : People
    {
        ///

标签:反射,exe,语言,C#,技术,dll,编译器,IL,metadata
From: https://blog.csdn.net/m0_61199122/article/details/143017116

相关文章

  • 打开文件和文件夹工具类 - C#小函数类推荐
          此文记录的是打开文件和文件夹工具类。/***打开文件和文件夹工具类AustinLiu刘恒辉ProjectManagerandSoftwareDesignerE-Mail:[email protected]:http://lzhdim.cnblogs.comDate:2024-01-1515:18:00***/names......
  • 从蹲在碎片前沉思到SpaceX“筷子回收”,马斯克用20年把梦想照进现实!
    2006年,一片荒芜的沙漠中,火箭残骸散落一地。伊隆·马斯克蹲在爆炸后的碎片旁,眼中满是失望和沮丧。这个场景成为了SpaceX发展历程中的一个重要转折点。SpaceX的故事始于2002年,马斯克带着火星移民的梦想创立了这家公司。早期的SpaceX面临着巨大的挑战。连续三......
  • R语言机器学习算法实战系列(五)GBM算法+SHAP值 (Gradient Boosting Machines)
    禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者!文章目录介绍教程下载数据加载R包导入数据数据预处理数据描述数据切割调节参数构建模型预测测试数据评估模型模型准确性混淆矩阵模型评估指标ROCCurvePRCCurve特......
  • oracle 11g常用运维命令总结
    一、日常巡检命令1、检查Oracle实例状态SQL>setpages600lines600SQL>selectinstance_name,host_name,startup_time,status,database_statusfromv$instance;说明:“STATUS”表示Oracle当前的实例状态,必须为“OPEN”;“DATABASE_STATUS”表示Oracle当前数据库的状......
  • 集合论(ZFC)之 阿列夫数(Alephs)
    直观感受(Intuition)及核心理念(CoreIdea)        阿列夫数(Alephs)主要是为了衡量良序(well-ordered)的无限集(infiniteset)与超限集(transfiniteset)的大小(无限集中含有无限个元素,而超限集包含无限个元素,且其中有无限集作为其元素),例如自然数集合大小为第一个阿列夫数,记,aleph......
  • 集合论(ZFC)之序型(Order Type)
    直观感受(Intuition)及核心理念(CoreIdea)             序型(OrderType)的概念,用以描述了集合的结构是否相同。相同结构意味着,对比的两集合,其元素个数,及元素间的关系,都一样。这里,与基数的概念很相似,但基数不考虑元素间的关系,只考虑元素的个数。核心理念形式化(For......
  • Java最全面试题->Java基础面试题->JavaWeb面试题->Cookie/Session面试题
    Cookie/Session下边是我自己整理的面试题,基本已经很全面了,想要的可以私信我,我会不定期去更新思维导图哪里不会点哪里什么是Cookie?HTTPCookie(也叫WebCookie或浏览器Cookie)是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器下次向同一服务器再发起请求......
  • 出现WrongArgumentException: Malformed database URL, failed to parse the connecti
    目录1.问题所示2.原理分析3.解决方法1.问题所示编辑数据源的时候,后端出现如下BugThelastpacketsentsuccessfullytotheserverwas0millisecondsago.Thedriverhasnotreceivedanypacketsfromtheserver.com.mysql.cj.jdbc.exceptions.Com......
  • 详细分析 Spring CORS 配置 (附Demo)
    目录前言1.基本知识2.Demo前言基本的Java知识推荐阅读:java框架零基础从入门到精通的学习路线附开源项目面经等(超全)【Java项目】实战CRUD的功能整理(持续更新)原先写过一篇跨域的基本知识:Springboot处理跨域的方式(附Demo)1.基本知识CorsRegistry是Spring框架......
  • C#asp,net病历管理系统 毕业设计-附源码42200
                                目 录摘要1绪论1.1研究背景1.2研究意义1.3B/S体系结构介绍1.4ASP.NET框架介绍2 病历管理系统分析2.1可行性分析2.2系统流程分析2.2.1数据增加流程2.2.2数......