C#编程-使用反射检索元数据

news2024/9/25 21:31:09

在这里插入图片描述

使用反射检索元数据

术语反射通常用来指镜像。如果您站在镜子面前,镜子会反射出您的所有物理属性,如:您的身高、肤色和身体结构。在C#中也一样,反射被用于反射程序有关的所有信息。C#程序可以利用反射获得类在运行时的信息。

反射在运行时获取类型信息的过程中被使用。提供运行时程序元数据信息的类在System.Reflection名称空间中。

System.Refection名称空间包含的类允许程序员获取关于正在运行的应用程序信息以及将类型、值和对象动态添加到那个应用程序。

反射通常用于:

  1. 查看元数据:允许您在运行时从代码查看属性信息。
  2. 执行类型发现:允许您检查程序集中的各种类型并实例化那些类型。
  3. 方法和属性的后期绑定:允许您使用类型发现在动态实例化的对象上调用属性和方法。
  4. 反射发出:允许您在运行时创建新类型,然后使用这些类型来执行任务。

在这里插入图片描述

查看元数据

要使用反射查看元数据,需要初始化System.Relection名称空间的MemberInfo对象。此对象有助于发现成员的属性并且提供对元数据信息的访问。可以通过进一步用漏洞修复示例读取Calculator类中的元数据来显示反射。要完成此操作,您需要定义Calculator类的对象,如以下代码段所示:

	Type type = typeof( Calculator );

在上述代码段中,Calculator类型上的typeof运算符返回Type类的type对象。Type类是反射在类的根,这是访问元数据的基本方法。它封装了对象类型的表示。System.Refection名称空间的MemberInfo对象派生自封装有关成员信息的Type类。

获得Calculator类的类型信息后,您需要发起对GetCustomAttributes()方法的调用。此方法返回每个BugFixingAttribute属性类型的对象数组。

以下代码段显示了漏洞修复示例的已修复Main()方法:

using System;
using System.Reflection;
namespace Attribute_Example
{
   
	/* create a custom sttribute to be assigned to class and its members */
	[AttributeUsage(AttributeTargets.Class |
	AttributeTargets.Constructor | AttributeTargets.Field |
	AttributeTargets.Method | AttributeTargets.Property, AllowMultiple = true
	)]
	public class BugFixingAttribute : System.Attribute
	{
   
		private int bugNo;
		private string developer;
		private string dateFixed;
		public string remarks;
		//attribute constructor for positional parameters
		public BugFixingAttribute(int BugNo, string Developer

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1397098.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python自动化报告的输出用例详解

1、设计简单的用例 2、设计用例 以TestBaiduLinks.py命名 # coding:utf-8from selenium import webdriverimport unittestclass BaiduLinks(unittest.TestCase):def setUp(self):base_url https://www.baidu.comself.driver webdriver.Chrome()self.driver.implicitly_wait(…

监控系统——Zabbix

目录 Zabbix概述 Zabbix 监控原理 Zabbix 与 Prometheus的区别 Zabbix 6.0 新特性 Zabbix 6.0 功能组件 Zabbix Server 数据库 Web 界面 Zabbix Agent Zabbix Proxy Java Gateway Zabbix 6.0 部署 部署 zabbix 服务端 添加 zabbix 客户端主机 自定义监控内容…

如何使用idm下载百度网盘的资源

IDM是海内外都非常受欢迎的一款下载管理软件。它支持视频媒体嗅探和多线程下载,能够完美替代谷歌Chrome浏览器、Edge浏览器等浏览器的原生下载功能。在浏览器中单击下载链接时,idm将接管浏览器的原生下载工具并加快下载速度,支持HTTP&#xf…

Architecture Lab:part A 【实现sum_list/rsum_list/copy_block/熟悉Y86-64指令】

Architecture Lab 对应CS:APP的Chap 4——处理器体系结构。Part A要实现三个函数,分别为sum_list/rsum_list/copy_block。建议先得到x86-64指令,然后再转换为Y86-64指令。 准备工作 在misc目录下,键入以下命令用来生成汇编代码。命令执行完…

tui.calender日历创建、删除、编辑事件、自定义样式

全是坑🕳!全是坑🕳!全是坑🕳!能不用就不用! 官方文档:https://github.com/nhn/tui.calendar/blob/main/docs/en/apis/calendar.md 实例的一些方法,比如创建、删除、修改、…

【React】脚手架创建项目

文章目录 创建React项目目录结构分析了解PWA脚手架中的webpack 创建React项目 ◼ 创建React项目的命令如下: ​  注意:项目名称不能包含大写字母 ​  另外还有更多创建项目的方式,可以参考GitHub的readme 命令: create-rea…

Redis相关命令详解及其原理

Redis概念 Redis,英文全称是remote dictionary service,也就是远程字典服务。这是kv存储数据库。Redis,包括所有的数据库,都是请求-回应模式,通俗来说就是数据库不会主动地要给前台推送数据,只有前台发送了…

1026 程序运行时间 (15)

要获得一个 C 语言程序的运行时间,常用的方法是调用头文件 time.h,其中提供了 clock() 函数,可以捕捉从程序开始运行到 clock() 被调用时所耗费的时间。这个时间单位是 clock tick,即“时钟打点”。同时还有一个常数 CLK_TCK&…

使用zabbix-proxy进行分布式监控

目录 一、准备4台服务器 二、配置主从复制 1.准备环境 2.主机名解析 3.安装数据库 4.配置主库db1 5.配置从库db2 6.主从状态显示 三、db1,db2配置zabbix-agent 三、zabbix-server的配置 四、zabbix-proxy的配置 1.为您的平台安装和配置Zabbix-proxy a. …

勒索病毒:原理与防御

一、勒索病毒概述 勒索病毒,又称为Ransomware,是一种恶意软件,通过感染电脑系统、服务器或者手机等设备,使用户文件被加密,从而向用户索取赎金以解锁文件。近年来,勒索病毒已经成为网络安全领域的一大公害…

linux java 8安装

tar -zxf jdk-8u***.tar.gz -C /usr/loacl/ vim /etc/profile i 输入 export JAVA_HOME/usr/local/安装文件名 export PATH${JAVA_HOME}/bin:$PATH ESC :wq 保存退出 source /etc/profile 验证 java -version

【漏洞复现】上海真兰燃气收费系统信息泄露漏洞

Nx01 产品简介 上海真兰仪表科技股份有限公司,成立于2011年,真诺测量仪表成员,位于上海市,是一家以从事仪器仪表制造业为主的企业。 Nx02 漏洞描述 上海真兰仪表科技股份有限公司燃气收费系统存在信息泄露漏洞,log目录…

上海智慧岛大数据云计算中心项目正式封顶!

上海智慧岛大数据云计算中心封顶仪式现场 1月15日,云端股份在上海智慧岛大数据云计算中心举行封顶仪式。云之端网络(江苏)股份有限公司(以下称“云端股份”)总经理贡伟力先生,常务副总张靖先生等公司成员&…

BGP最通俗易懂的讲解——路由反射器

路由反射器 点赞关注,持续更新 路由反射器RR (Route Reflector) : 允许把从IBGP 对等体学到的路由反射到其他BGP对等体的BGP设备。客户机 (Client) : 与RR形成反射邻居关系的IBGP设备。在AS内部客户机只需要与RR建立邻居关系。非客户机 (Non-Client) …

CentOS 8.5 安装图解

特特特别的说明 CentOS发行版已经不再适合应用于生产环境,客观条件不得不用的话,优选7.9版本,8.5版本次之,最次6.10版本(比如说Oracle 11GR2就建议在6版本上部署)! 引导和开始安装 选择倒计时结…

如何使用Lychee结合内网穿透搭建私人图床网站并发布至公网远程访问

文章目录 1.前言2. Lychee网站搭建2.1. Lychee下载和安装2.2 Lychee网页测试2.3 cpolar的安装和注册 3.本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4.公网访问测试5.结语 1.前言 图床作为图片集中存放的服务网站,可以看做是云存储的一部分,既可…

【计算机网络】HTTP协议以及简单的HTTP服务器实现

文章目录 一、HTTP协议1.认识URL2.urlencode和urldecode3.HTTP协议格式4.HTTP的方法5.HTTP的状态码6.HTTP常见Header7.重定向8.长连接9.会话保持10.基本工具 二、简单的HTTP服务器实现1.err.hpp2.log.hpp3.procotol.hpp4.Sock.hpp5.Util.hpp6.httpServer.hpp7.httpServer.cc8.总…

阿里云ECS使用docke搭建redis服务

目录 1.确保正确安装好docker 2.安装redis镜像 3.创建容器设置端口映射 1.确保正确安装好docker 安装教程: 阿里云ECS(CentOS镜像)安装docker-CSDN博客https://blog.csdn.net/qq_62262918/article/details/135686614?spm1001.2014.3001.5501 2.安装redis镜像…

年龄性别预测1:年龄性别数据集说明(含下载地址)

年龄性别预测1:年龄性别数据集说明(含下载地址) 目录 年龄性别预测1:年龄性别数据集说明(含下载地址) 1.前言 2.MegaAge_Asian 3.MORPH 4.IMDB-WIKI 5.数据集下载 6.年龄性别预测和识别(Python/C/Android) 1.前言 本项目将实现年龄性别预测和识…

Java医药WMS进销存系统

技术架构: jdk8 IntelliJ IDEA maven Mysql5.7 有需要的可以私信我。 系统功能与介绍: 医药进销存系统,主要分两种角色:员工、客户。本系统具有进销存系统的通用性,可以修改为其它进销存系统,如家电进…