C# Atrribute和反射的简单例子
Attribute 需要以Attribute 结尾, 并继承Attribute
namespace AttributeTest
{public class HeroAttribute : Attribute{}
}
namespace AttributeTest
{public class SkillAttribute : Attribute{}
}
namespace AttributeTest
{[Hero]public class Blademaster{[Skill]public void JiFengBu(){Console.WriteLine("疾风步");}[Skill]public void ZhiMingYiJi(){Console.WriteLine("致命一击");}}
}
using AttributeTest;
using System.Reflection;List<Type> heroTypes = new();
object selecthero;//所有英雄的类型
heroTypes = Assembly.GetExecutingAssembly().GetTypes().Where(t => t.GetCustomAttributes(typeof(HeroAttribute), false).Any()).ToList();//英雄的名字
var list = heroTypes.Select(t => t.Name).ToList();foreach (var item in list)
{Console.WriteLine(item);
}Console.WriteLine("==============");
foreach (var item in heroTypes)
{var t = Activator.CreateInstance(item);//创建对象var skillMethods = item.GetMethods().Where(m =>m.GetCustomAttributes(typeof(SkillAttribute), false).Any()).ToList();var methodsName = skillMethods.Select(m => m.Name).ToList();methodsName.ForEach(x => Console.WriteLine(x));
}
结果 :

相关文章:
C# Atrribute和反射的简单例子
Attribute 需要以Attribute 结尾, 并继承Attribute namespace AttributeTest {public class HeroAttribute : Attribute{} }namespace AttributeTest {public class SkillAttribute : Attribute{} }namespace AttributeTest {[Hero]public class Blademaster{[Skill]public vo…...
ASP.NET Core - 缓存之分布式缓存
分布式缓存是由多个应用服务器共享的缓存,通常作为访问它的应用服务器的外部服务进行维护。 分布式缓存可以提高 ASP.NET Core 应用的性能和可伸缩性,尤其是当应用由云服务或服务器场托管时。 与其他将缓存数据存储在单个应用服务器上的缓存方案相比&am…...
代理模式(C++)
定义 为其他对象提供一种代理以控制(隔离,使用接口)对这个对象的访问。。 应用场景 在面向对象系统中,有些对象由于某种原因(比如对象创建的开销很大,或者某些操作需要安全控制,或者需要进程外的访问等)直接访问会给使用者、或…...
C# 有效的字母异位词
242 有效的字母异位词 给定两个字符串 和 ,编写一个函数来判断 是否是 的字母异位词。stts 注意:若 和 中每个字符出现的次数都相同,则称 和 互为字母异位词。stst 示例 1: 输入: s “anagram”, t “nagaram” 输出: true 示例 2: 输…...
R语言安装包Seurat
环境Ubuntu22,R4.1 also installing the dependencies ‘curl’, ‘openssl’, ‘httr’, ‘plotly’ R包安装的时候报了这个错误ERROR: dependencies httr, plotly are not available for package Seurat 解决方法,退出R,在terminal中键入…...
vue2中使用mixins(混入)和vue3中使用composable
文章目录 一、mixins混入1、 新建mixins文件夹,新建myMixins.js2、myMixins.js 文件3、index.vue 文件(要使用的文件) mixins 总结二、composable(组合式api composition )1、 新建composables文件夹,新建useEdit.js2、useEdit.js…...
通过OpenTelemetry上报Python-flask应用数据(阿里云)
参考文档 https://help.aliyun.com/document_detail/611711.html?spma2c4g.90499.0.0.34a056ddTu2WWq 先按照 方法一:手动埋点上报Python应用数据 步骤测试上报是否正常。 flas 上报 在 手动埋点上报Python应用数据 的基础上,上报flask应用的数据&#…...
使用node搭建服务器,前端自己写接口,将vue或react打包后生成的dist目录在本地运行
使用node.jsexpress或者使用node.jspm2搭建服务器,将vue或react打包后生成的dist目录在本地运行 vue项目打包后生成的dist目录如果直接在本地打开index.html,在浏览器中会报错,无法运行起来。 通常我是放到后端搭建的服务上面去运行,当时前端…...
一篇文章搞懂如何使用JDBC操作数据库,还有JDBC进阶操作
目录 简介什么是JDBC如何使用JDBC1、获取连接2、操作数据3、关闭连接,释放资源使用技巧 查询操作创建表,插入模拟数据使用Java查询数据的数据SQL注入问题使用PreparedStatement查询 更新操作插入插入并获取主键更新删除 JDBC事务JDBC的批量操作JDBC连接池…...
9.3.2.1网络原理(UDP)
1.UDP的基本特点:无连接,不可靠传输,面向数据报,全双工. 2.1~1024的端口号有特定的含义,不建议使用.比如21:ftp,22:ssh,80:http,443:https. 3.CRC校验算法:循环冗余校验和,把UDP报中的每个字节都依次进行累加,把累加的结果,放到两个字节的变量中,溢出也无所谓,因为都加了一遍.…...
21、stm32使用LTDC驱动LCD
注:本文基于stm32使用FMC驱动SDRAM(IS42S32800G-6BLI)工程继续开发 本例使用安富莱的H743XIH板子驱动LTDC点亮7寸LCD 硬件接线:RGB888 一、cubemx配置 1、LTDC配置 注意此引脚应于上面的硬件接线图一致 2、配置DMA2D 3、背光引脚和触摸引脚 4、时钟…...
合并两个有序链表
就像一个贪吃蛇将两个链表一一的吃进来 class Solution(object):def mergeTwoLists(self, list1, list2):""":type list1: Optional[ListNode]:type list2: Optional[ListNode]:rtype: Optional[ListNode]"""p ListNode(0)cur pwhile list1 a…...
深入了解Unity的Physics类:一份详细的技术指南(七)(上篇)
前言 Unity的Physics类是Unity物理系统的核心,提供了一套用于处理和控制物理模拟的API。这个类提供了用于控制物理系统的全局属性和方法,以及检测和施加力到游戏对象,处理碰撞和触发器事件等。为了让开发者都能更好理解这个Physics类&#x…...
数据结构与算法-数组(附阿里面试题)
一 面试经典: 给你一个文件里面包含全国人民(14亿)的年龄数据(0~180),现在要你统计每一个年龄 有多少人? 给定机器为 单台2CPU2G内存。不得使用现成的容器,比如map等。&am…...
k8s集群网络插件搭建——————解决集群notready(k8s1.20版本,docker24)
前面已经提到,在初始化 k8s-master 时并没有网络相关配置,所以无法跟 node 节点通信,因此状态都是“NotReady”。但是通过 kubeadm join 加入的 node 节点已经在k8s-master 上可以看到。 那么,这个时候我们该怎么办呢?…...
有血有肉的PPT
1、PPT是Powerpoint缩写 2、引申的含义是Powerpoint Power(力量/能量) Point(观点/要点) 3、用PPT做的文档是讲演稿,讲演的内容要有力度,之所以要去演讲是为了能够影响受众 4、其次演讲稿上的内容要列出要点、表明观点,所以一般P…...
使用C语言实现UDP消息接收
目录 简介:步骤:步骤 1: 创建套接字步骤 2: 接收消息步骤 3: 完成 函数及变量解释总结: 简介: 在网络通信中,UDP(User Datagram Protocol)是一种无连接协议,它提供了一种快速、高效的数据传输方法。本文将向您展示如何使用C语言编…...
图片加水印
基础 基于:https://github.com/chishaxie/BlindWaterMark#blindwatermark 前置 安装python,操作系统为ubuntu 18.04.4 server 说明:python2 不行,已验证不行的版本是2.7.17,建议使用ubuntu 18.04.4 server对应的py…...
Nginx代理接口访问返回404
Nginx代理接口访问返回404 一、背景 因为不同业务系统间有接口调用,存在跨域问题,为了解决同源策略,需要将接口通过nginx去转发,但是配置完后通过postman请求一直存在访问404的问题。 访问地址:https://a.test.com/n…...
湘大 XTU OJ 1097 排序 题解:c++ 函数库的使用 快速排序 归并排序 冒泡排序
一、链接 1097 排序 二、题目 Description N个整数,将其排序输出。 输入 第一行是一个整数K(1<K<20),表示有多少个样例,每个样例的第一行是一个整数N(1<N<1,000)和一个字符X&…...
Day05 完整学习计划 | 阿里云ACP大模型解决方案专家
文章目录Day05 完整学习计划(沿用统一打卡格式)今日核心目标一、25 分钟:大模型生产环境核心考点1. 高可用部署2. 监控体系(阿里云必考)3. 成本优化二、25 分钟:安全与合规(高频大题)…...
智能视觉组比赛软件Bug趣味文案(适配女生快速朗读)
简 介: 《智能车比赛惊现"隧道穿越"BUG!该修还是该留?》 近日,智能视觉组比赛中出现了一个令人啼笑皆非的软件BUG:当车模进入虚拟墙体的死胡同时,虚拟车模会被"卡死",而实体…...
保姆级教程:在Ubuntu 20.04上搞定arm-linux-gnueabi交叉编译环境(含libmpfr.so.4报错解决方案)
从零构建ARM嵌入式开发环境:Ubuntu 20.04交叉编译实战指南 刚接触嵌入式开发的工程师常会遇到一个经典困境:在x86电脑上编写的代码,如何让ARM架构的开发板顺利运行?这个看似简单的问题背后,隐藏着工具链配置、库依赖解…...
QtCharts实战:除了圆点和方块,教你用QPainterPath画出五角星散点图(附完整源码)
QtCharts高级定制:用QPainterPath实现品牌化散点图设计 在数据可视化领域,标准化的圆点和方块已经无法满足现代UI设计的需求。当我们需要在医疗报告中呈现特殊标记,或在商业仪表盘中嵌入品牌元素时,自定义图形绘制技术就成为刚需。…...
4月21日发布!OPPO Pad Mini 要给小平板正名了
4月21日19:00,OPPO将召开新品发布会,除了Find X9s Pro等旗舰手机,最让我期待的就是OPPO Pad Mini这款小平板。说实话,这几年我一直觉得小平板是“鸡肋”——手机屏幕越做越大,折叠屏又能兼顾大屏,8.8英寸的…...
别再死记公式了!用PyTorch手把手带你理解BatchNorm的‘训练’与‘推理’模式差异
从零解剖BatchNorm:PyTorch实战中的训练/推理模式陷阱与解决方案 当你第一次在PyTorch中实现BatchNorm层时,是否遇到过这样的场景:训练时模型表现优异,但切换到eval模式后预测结果却大幅下降?这种现象背后隐藏着BatchN…...
统信UOS蓝牙管理实战:从服务控制到硬件开关
1. 统信UOS蓝牙管理入门指南 第一次接触统信UOS的蓝牙管理时,我完全被各种专业术语搞晕了。后来才发现,其实掌握几个核心命令就能解决90%的日常问题。作为国产操作系统的代表,统信UOS在蓝牙管理方面提供了完整的命令行工具链,特别…...
别再手动同步了!用Go-FastDFS搭建三节点Linux文件集群,附Nginx代理完整配置
三节点Go-FastDFS集群实战:告别手动同步的运维噩梦 凌晨三点,服务器报警声再次响起——又一台存储节点因磁盘写满而离线。这是本月第三次因单点故障导致文件同步中断,团队不得不连夜手动修复数据一致性。这种场景在中小型技术团队中屡见不鲜&…...
别再死磕毕业论文!Paperxie 智能写作:大四生的「论文通关秘籍」
paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/期刊论文https://www.paperxie.cn/ai/dissertationhttps://www.paperxie.cn/ai/dissertation 大四下学期的关键词,一半是毕业旅行、散伙饭,另一半却是改到崩溃的论文初稿、导师的红色…...
Android 11 应用内更新踩坑记:从DownloadManager到FileProvider的完整避坑指南
Android 11应用内更新全流程实战:权限、存储与安装的现代化解决方案 在移动应用持续迭代的今天,应用内更新功能已成为提升用户体验的关键组件。然而,随着Android 11(API 30)引入的Scoped Storage等隐私保护机制&#x…...
