当前位置: 首页 > news >正文

C# 快速简单反射操作

文章目录

  • 前言
  • 新反射使用
    • BindingFlags
    • 以公有属性使用举例
      • 运行结果

前言

我之前写过一篇博客,是关于C# 反射的,我那时候使用的C# 反射写起来还是比较麻烦,需要获取Properies,再遍历Property,再找到对应Property,再使用。特别的麻烦。

C# 反射+泛型总结和应用

后来我在网上找了一下,找到了个视频,挺好的。

C#基础教程 Reflection应用,简单使用反射,打破常规!

新反射使用

BindingFlags

BindingFlags 是可以简化反射类型的参数。使用举例如下

//Public:公有,Instance:实例
BindingFlags bindingFlags = BindingFlags.Public | BindingFlags.Instance;

反射会得到三大类:

  • 静态|非静态
  • 公有|私有
  • 属性|字段|方法

以公有属性使用举例

    static async Task Main(string[] args){BindTest bindTest = new BindTest();Type type = bindTest.GetType();BindingFlags bindingFlags = BindingFlags.Public | BindingFlags.Instance;FieldInfo? fieldInfo = type.GetField("Field",bindingFlags);Console.WriteLine(fieldInfo?.GetValue(bindTest));fieldInfo?.SetValue(bindTest, "新字段值");Console.WriteLine(fieldInfo?.GetValue(bindTest));Console.WriteLine("******************");PropertyInfo? propertyInfo = type.GetProperty("Property", bindingFlags);Console.WriteLine(propertyInfo?.GetValue(bindTest));propertyInfo?.SetValue(bindTest, "新属性值");Console.WriteLine(propertyInfo?.GetValue(bindTest));Console.WriteLine("******************");MethodInfo? method1 = type.GetMethod("Method", bindingFlags);method1?.Invoke(bindTest, null);MethodInfo? method2 = type.GetMethod("Method2", bindingFlags);method2?.Invoke(bindTest, new object[]{"测试参数"});MethodInfo? method3 = type.GetMethod("Method3", bindingFlags);var res = method3?.Invoke(bindTest, null);Console.WriteLine(res);Console.WriteLine("******************");Console.WriteLine("运行完成!");}}public class BindTest
{public string Field = "公有字段";public string Property { get; set; } = "公有属性";public void Method(){Console.WriteLine("公有函数");}public void Method2(string str){Console.WriteLine($"公有参数函数,{str}");}public string Method3(){return "返回参数";}
}

运行结果

在这里插入图片描述

这里只将了简单的公有数据,私有属性和静态属性也差不多,这里我就不展开说明了。

相关文章:

C# 快速简单反射操作

文章目录 前言新反射使用BindingFlags以公有属性使用举例运行结果 前言 我之前写过一篇博客,是关于C# 反射的,我那时候使用的C# 反射写起来还是比较麻烦,需要获取Properies,再遍历Property,再找到对应Property,再使用…...

【python高级】设计模式、类工厂、对象工厂

一、说明 最近试着读Design pattern, 不过有些概念实在太抽象了, 整理一下自己所学抽象工厂的精神,就是要有abstract class(not implement),而所有不同种类的对象,都是继承这个abstract class&a…...

Flink的算子列表状态的使用

背景 算子的列表状态是平时比较常见的一种状态,本文通过官方的例子来看一下怎么使用算子列表状态 算子列表状态 算子列表状态支持应用的并行度扩缩容,如下所示: 使用方法参见官方示例,我加了几个注解: public class Bufferin…...

使用 Github Actions 工作流自动部署 Github Pages

GitHub-Actions actions顾名思义就是一堆动作,是一个持续集成服务,持续集成包含了拉代码、运行测试、编译代码、登录远程服务器,发布到第三方服务等等的操作,GitHub将这些操作称为actions。 概念:Workflows, Events,…...

Xposed hook 抖音账户信息

本篇主要讲下hook获取 抖音账户的相关信息,直接上代码。 public class DouHook {private static final String TAG "DouHook";public static void hook(XC_LoadPackage.LoadPackageParam lpparam) {Log.e(TAG, "DouHook start");if (lpparam …...

回顾 | E³CI效能认知与改进论坛,助力企业研发效能度量和提升

2023年8月,TiD质量竞争力大会组委会和ECI专家委员会成功举办TiD大时段课程“度量驱动研发效能提升”与“ECI效能认知与改进论坛”。与会专家以《ECI软件研发效能度量规范》团体标准为要点,为企业研发效能度量和提升分享诸多实践成果与经验。 《ECI软件研…...

科技的成就(五十二)

405、微信公众平台正式上线 "1995 年 8 月 24 日,微软发布 Windows 95。Windows 95 极大地改进了前续系统的图形用户界面,首次推出了开始菜单、任务栏、最大化、最小化窗口以及关闭按钮。此外,Windows 95 最大程度兼容当时的 MS-DOS 和 …...

【23种设计模式】装饰器模式

个人主页:金鳞踏雨 个人简介:大家好,我是金鳞,一个初出茅庐的Java小白 目前状况:22届普通本科毕业生,几经波折了,现在任职于一家国内大型知名日化公司,从事Java开发工作 我的博客&am…...

解决IDEA中SpringBoot项目创建多个子模块时配置文件小绿叶图标异常问题

在新建子模块下创建配置文件: 在子模块gateway中新建的配置文件,正常情况下配置文件左侧是小树叶标识,而这次新建application-dev.yml是个小树叶标识,bootstrap.yml是个方框。 看其他方案都是在project structure中设置,但未显示…...

【马蹄集】—— 概率论专题

概率论专题 目录 MT2226 抽奖概率MT2227 饿饿!饭饭!MT2228 甜甜花的研究MT2229 赌石MT2230 square MT2226 抽奖概率 难度:黄金    时间限制:1秒    占用内存:128M 题目描述 小码哥正在进行抽奖,箱子里有…...

Spring 6整合单元测试JUnit4和JUnit5

单元测试:JUnit 在之前的测试方法中,几乎都能看到以下的两行代码: ApplicationContext context new ClassPathXmlApplicationContext("xxx.xml"); Xxxx xxx context.getBean(Xxxx.class);这两行代码的作用是创建Spring容器&…...

【好书推荐】深入理解现代JavaScript

作者介绍 T. J. Crowder是一位拥有30年经验的软件工程师。在他的整个职业生涯中,他至少有一半时间是在使用JavaScript从事开发工作。他经营着软件承包和产品公司Farsight Software。他经常在Stack Overflow上为人们提供帮助,他是十大贡献者之一和JavaScr…...

高效协同: 打造分布式系统的三种模式

在构建分布式系统时,分布式协调是否总是必要选项?本文通过一些实际的例子讨论了这一问题,并通过把问题区分为是否具有单调性做为是否需要分布式协调的标准。原文: Avoiding Coordination Cost: Three Patterns for Building Efficient Distri…...

机器学习-无监督学习之聚类

文章目录 K均值聚类密度聚类(DBSCAN)层次聚类AGNES 算法DIANA算法 高斯混合模型聚类聚类效果的衡量指标小结 K均值聚类 步骤: Step1:随机选取样本作为初始均值向量。 Step2:计算样本点到各均值向量的距离,…...

智能垃圾桶丨悦享便捷生活

垃圾桶是人们日常生活所必不可少的必需品,它让生活中所产生的垃圾有了一个正确的存放地方。随着生产技术的迅速发展,垃圾桶也得以更新换代。由最初的简单式的圆筒式垃圾桶,到现在出现的感应式垃圾桶、智能语音控制垃圾桶,垃圾桶也…...

【数据结构】线性表(一)线性表的定义及其基本操作(顺序表插入、删除、查找、修改)

目录 一、线性表 1. 线性表的定义 2. 线性表的要素 二、线性表的基本操作 三、线性表的顺序存储结构 1. 定义 2. 顺序表的操作 a. 插入操作 b. 删除操作 c. 查找操作 d. 修改操作 e. 代码实例 一、线性表 1. 线性表的定义 一个线性表是由零个或多个具有相同…...

MyBatis的自定义插件

MyBatis的自定义插件 前置知识 MyBatis 可以拦截的四大组件 Executor - 执行器StatementHandler - SQL 语句构造器ParameterHandler - 参数处理器ResultSetHandler - 结果集处理器 自定义 MyBatis 插件 /*** 打印 sql 执行的时间插件*/ Intercepts(// 指定拦截器拦截的对象…...

生物制剂\化工\化妆品等质检损耗、制造误差处理作业流程图(ODOO15/16)

生物制剂、化工、化妆品等行业,因为产品为液体,产品形态和质量容易在各个业务环节发生变化,常常导致实物和账面数据不一致,如果企业业务流程不清晰,会导致系统大量的库存差异,以及财务难以核算的问题&#…...

vbv介绍

VBV模型 VBV即Video Buffer Verifier(视频缓冲区校验器)。 本质是encoder端的一个虚拟buffer,可以将VBV当做一个容量受限的管道,有一个上限容量值和下限容量值,在经过此管道的调节之后能限制编码码率在上限容量值和下限容量值之间。VBV对标NetEq中的那几个buffer(decoder b…...

Linux CentOS 8(网卡的配置与管理)

Linux CentOS 8(网卡的配置与管理) 目录 一、项目介绍二、命令行三、配置文件四、图形画界面的网卡IP配置4.1 方法一4.2 方法二 一、项目介绍 Linux服务器的网络配置是Linux系统管理的底层建筑,没有网络配置,服务器之间就不能相互…...

淘宝淘金币自动化脚本:5分钟完成每日任务,解放双手的时间管理方案

淘宝淘金币自动化脚本:5分钟完成每日任务,解放双手的时间管理方案 【免费下载链接】taojinbi 淘宝淘金币自动执行脚本,包含蚂蚁森林收取能量,芭芭农场全任务,解放你的双手 项目地址: https://gitcode.com/gh_mirrors…...

英雄联盟自动化助手:5分钟告别繁琐操作,专注游戏策略的终极方案

英雄联盟自动化助手:5分钟告别繁琐操作,专注游戏策略的终极方案 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 你是否…...

从‘过拟合陷阱’到可靠评估:手把手教你用Python和Scikit-learn玩转交叉验证(含RepeatedKFold/LeaveOneOut)

从‘过拟合陷阱’到可靠评估:手把手教你用Python和Scikit-learn玩转交叉验证(含RepeatedKFold/LeaveOneOut) 当你满怀期待地将训练集上准确率高达98%的模型部署到生产环境,却发现实际预测效果惨不忍睹时,那种落差感就…...

如何在PowerPoint中高效使用LaTeX进行数学公式排版

如何在PowerPoint中高效使用LaTeX进行数学公式排版 【免费下载链接】latex-ppt Use LaTeX in PowerPoint 项目地址: https://gitcode.com/gh_mirrors/la/latex-ppt 对于需要制作学术演示文稿的科研人员、教师和学生来说,在PowerPoint中排版复杂的数学公式一直…...

别再手动调position了!用MATLAB tiledlayout搞定双坐标轴图(R2019b+保姆级教程)

MATLAB双坐标轴绘图革命:tiledlayout全攻略 在科研绘图和工程可视化领域,双坐标轴图表是展示多维度数据的利器。传统MATLAB绘图方法需要手动计算position属性,代码冗长且难以维护。R2019b版本引入的tiledlayout功能彻底改变了这一局面&#x…...

手把手教你用VSCode+OpenOCD实时查看HPM6750外设寄存器(附SVD文件配置)

手把手教你用VSCodeOpenOCD实时监控HPM6750寄存器状态 调试嵌入式系统时,最令人头疼的莫过于面对一个"黑箱"——明明程序在跑,却看不到硬件寄存器的实时状态。这种盲目操作就像蒙着眼睛修车,效率低下且容易出错。本文将彻底解决这个…...

DELL R730XD加装二手阵列卡后风扇狂转?手把手教你用ipmitool命令降噪

DELL R730XD二手阵列卡引发的风扇狂转:深度解析与ipmitool实战降噪指南 当你为心爱的DELL R730XD服务器加装二手阵列卡后,迎接你的不是性能提升的喜悦,而是直升机起飞般的风扇轰鸣——这种场景对于许多精打细算的企业IT人员来说再熟悉不过。本…...

避坑指南:Houdini风格化树木导入Unity URP后,光照和裁剪效果不对怎么办?

Houdini风格化树木在Unity URP中的渲染问题深度解析与实战修复 当你在Houdini中精心雕琢的风格化树木模型导入Unity URP管线后,可能会遭遇一系列令人沮丧的渲染问题:叶片边缘出现锯齿状裁剪、光照效果与预期不符、阴影投射异常等。这些问题的根源往往在于…...

微信聊天记录完整导出指南:无需越狱的本地化解决方案

微信聊天记录完整导出指南:无需越狱的本地化解决方案 【免费下载链接】WeChatExporter 一个可以快速导出、查看你的微信聊天记录的工具 项目地址: https://gitcode.com/gh_mirrors/wec/WeChatExporter 在数字时代,微信聊天记录承载着珍贵的工作沟…...

从 0 到 1:构建一个供 AI Agent 使用的图像生成技能系统

前言 当我们把 AI Agent 接进工作流后,几乎每天都会遇到一个痛点:图像生成这件事,每次都要靠 Agent 自己拼提示词。没有风格库、没有模板、没有搜索——结果全靠"手感",输出质量参差不齐。 image-craft 这个项目&…...