C#__使用Type类反射数据的基本用法

news2024/9/27 12:13:22

 // 简单介绍

// 元数据(metadata):与程序及其类型有关的数据。
// 反射:一个运行的程序查看本身元数据或其他程序集中的元数据的行为
// Assembly类:允许访问给定程序集的元数据,包含了可以加载和执行程序集

// 定义一个用于访问的类MyClass

    class MyClass
    {
        private int a, b;
        public int c;
        public string d;

        public string Name1 { get; set; }
        public string Name2 { get; set; }
        public void Test1() { }
        public void Test2() { }
    }

// 主函数调用

    class Program
    {
        static void Main(string[] args)
        {
            // 使用Type类可以反射数据
            // 定义

            // 方案一
            Type t1 = typeof(MyClass);
            // 方案二
            MyClass myclass = new MyClass();
            Type t2 = myclass.GetType();
            
            // 获取类名
            Console.WriteLine(t1.Name); // MyClass
            Console.WriteLine(t2.Name); // MyClass
            // 获取空间名
            Console.WriteLine(t1.Namespace); // TypeAndAssembly
            Console.WriteLine(t2.Namespace); // TypeAndAssembly
            // 获取程序集的基本信息 (空间名,版本,文化,公共钥匙符号)
            Console.WriteLine(t1.Assembly); // TypeAndAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
            Console.WriteLine(t2.Assembly); // TypeAndAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null

            // 提取MyClass的字段的属性
            FieldInfo[] fis = t1.GetFields();
            foreach (FieldInfo fi in fis)
            {
                Console.WriteLine(fi.Name); 
                //c
                //d
            }

            // 提取MyClass的属性的 get 访问器。
            PropertyInfo[] pis = t2.GetProperties();
            foreach (PropertyInfo pi in pis)
            {
                Console.WriteLine(pi); 
                // System.String Name1
                // System.String Name2
            }

            // 提取Myclass的类函数(包含继承自父类的)
            MethodInfo[] mis = t2.GetMethods();
            foreach (MethodInfo mi in mis)
            {
                Console.WriteLine(mi);
                /*
                System.String get_Name1()
                Void set_Name1(System.String)
                System.String get_Name2()
                Void set_Name2(System.String)
                Void Test1()
                Void Test2()
                Boolean Equals(System.Object)
                Int32 GetHashCode()
                System.Type GetType()
                System.String ToString()
                 */
            }
        }
    }

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

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

相关文章

爬虫IP时效问题:优化爬虫IP使用效果实用技巧

目录 1. 使用稳定的代理IP服务提供商: 2. 定期检测代理IP的可用性: 3. 配置合理的代理IP切换策略: 4. 使用代理IP池: 5. 考虑代理IP的地理位置和速度: 6. 设置合理的请求间隔和并发量: 总结 在爬虫过…

Max Compute 操作记录

编译 max compute-spark git clone https://github.com/aliyun/MaxCompute-Spark cd spark-3.x mvn clean package -DskipTests在 target 目录下生成 以下两个文件。 spark-examples_2.12-1.0.0-SNAPSHOT-shaded.jar spark-examples_2.12-1.0.0-SNAPSHOT.jar2. DataWorks 上传…

计组 | 中断是什么?中断流程有哪些?什么情况下响应中断?

前言 记录一些计组相关联的题集与知识点,方便记忆与理解。 中断 总结 IBM370系统: IBM370计算机将中断类分为机器校验、访管、程序性、外部、输入/输出、重新启动6类。 中断响应优先级级别最低的是 重新启动中断 中断响应优先级级别最高的中断类型是…

ARouter基本使用及原理分析

作者:愿天深海 ARouter简介 ARouter是阿里开源的一款帮助Android App进行组件化改造的路由框架,是Android平台中对页面和服务提供路由功能的中间件,可以实现在不同模块的Activity之间跳转。 ARouter的特点是灵活性强还能帮助项目解耦。 除…

SpringCloud Gateway:status: 503 error: Service Unavailable

使用SpringCloud Gateway路由请求时,出现如下错误 yml配置如下: 可能的一种原因是:yml配置了gateway.discovery.locator.enabledtrue,此时gateway会使用负载均衡模式路由请求,但是SpringCloud Alibaba删除了Ribbon的…

创建远程仓库以及分支

1、 创建远程仓库 这里有两种方式 1.1 利用git的插件有Gitee、GitHub。 来到 GitHub 中发现已经帮我们创建好了 gitTest 的远程仓库。 1.2 通过Push的方式推送本地库到远程库 这种方式需要提前创建好仓库。 右键点击项目,可以将当前分支的内容 push 到 GitHub 的远…

探索区块链世界:去中心化应用(DApp)的崭新前景

随着科技的不断发展,区块链技术逐渐引领着数字时代的潮流。在这个充满创新和变革的领域中,去中心化应用(DApp)成为了备受瞩目的焦点。DApp 不仅改变了传统应用程序的范式,还在金融、社交、游戏等多个领域展现出了广阔的…

《内网穿透》无需公网IP,公网SSH远程访问家中的树莓派

文章目录 前言 如何通过 SSH 连接到树莓派步骤1. 在 Raspberry Pi 上启用 SSH步骤2. 查找树莓派的 IP 地址步骤3. SSH 到你的树莓派步骤 4. 在任何地点访问家中的树莓派4.1 安装 Cpolar内网穿透4.2 cpolar进行token认证4.3 配置cpolar服务开机自启动4.4 查看映射到公网的隧道地…

Python 实现性能自动化测试竟然如此简单

一、思考 ❓❔ 1.什么是性能自动化测试? 性能 系统负载能力超负荷运行下的稳定性系统瓶颈自动化测试 使用程序代替手工提升测试效率 性能自动化 使用代码模拟大批量用户让用户并发请求多页面多用户并发请求采集参数,统计系统负载能力生成报告 2.Pytho…

pyG学习笔记

pyG学习笔记 一、Mac M1安装pyG 系统版本 Ventura 13.5 13.5(22G74)方案一运行时报错:OMP: Error #15: Initializing libomp.dylib, but found libomp.dylib already invscode运行代码报错ERROR: CONDA_BUILD_SYSROOT or SDKROOT has to be s…

k8s集群生产环境的问题处理

2 k8s上的服务均无法访问 执行命令kubectl get pods -ALL,k8s集群中的服务均是running状态 1 kuboard 网页无法访问 kuboard无法通过浏览器访问,但是查看端口是被占用的

[Vue]解决npm run dev报错node:internal/modules/cjs/loader:1031 throw err;

解决: 有2中方法,建议先尝试第一种,不行再第二种 第一种: 重新安装依赖环境 删除项目的node_modules文件夹,重新执行 # 安装依赖环境 npm install# 运行 npm run dev 我只用了第一种方法就可以了 ,第二种方法从别的博主那看到…

OLED透明屏轻量化设计:提升便携性与用户体验的新方向

随着科技的不断进步,OLED透明屏作为一种新兴的显示技术正逐渐走入人们的视野。除了在视觉效果上的优势,OLED透明屏在重量方面的设计也备受关注。 对此,尼伽将深入探讨OLED透明屏轻量化设计的重要性、策略以及应用案例,希望看后对…

使用AnimeGAN2和anime-segmentation生成自己的漫画头像

今天我们来介绍一下怎么利用GAN生成属于的自己的漫画风头像。所需要用的生成模型为AnimeGAN2 🤡AnimeGAN2漫画风生成 🍎 使用Huggingface Space的AnimeGAN2 WebUI 网址链接:AnimeGANv2 - a Hugging Face Space by akhaliq 网页界面如下&am…

医疗机构过等保选择哪款堡垒机好?为什么?

根据《医疗卫生机构网络安全管理办法》、《基本医疗卫生与健康促进法》、《网络安全法》等法规,医疗机构必须按照规定进行等保测评。那你知道医疗机构过等保选择哪款堡垒机好?为什么?今天我们就来一起聊聊。 医疗机构过等保选择哪款堡垒机好…

操作系统-笔记-第二章-线程

目录 二、第二章——【线程】​编辑 1、线程的概念 2、线程的属性 3、线程的实现方式 (1)最简单的线程实现(用户级线程) (2)内核级线程 (3)内核用户(一对一、多对…

【C++】list容器

1.list基本概念 2.list构造函数 #include <iostream> using namespace std;#include<list> //链表list容器构造函数//输出list链表 void printList(const list<int>& L) {for (list<int>::const_iterator it L.begin(); it ! L.end(); it){cout &…

Vue-6.编译器webstorm

前言 对于长期使用idea的同学&#xff0c;前端编译器可以使用webstorm 下载地址破解方式 关闭自动更新 全局内存配置&#xff08;重启后生效&#xff09; 安装插件 汉化插件&#xff08;Chinese&#xff09; Gitee&#xff08;我喜欢用Gitee&#xff0c;它比较快&#xff0…

工作流自动化:提升效率、节约成本的重要工具

在现代社会中&#xff0c;软件和技术的运用使得我们的日常活动变得更加简单和高效。然而&#xff0c;这些技术也有自身的特点和独特之处。尽管我们使用这些工具来简化工作&#xff0c;但有时仍需要一些人工干预&#xff0c;比如手动数据录入。在工作场所中&#xff0c;手动数据…