C# 获取类型 Type.GetType()

news/2024/5/20 21:59:07/文章来源:https://blog.csdn.net/xhydongda/article/details/136375082

背景

  C#是强类型语言,任何对象都有Type,有时候需要使用Type来进行反射、序列化、筛选等,获取Type有Type.GetType, typeof(),object.GetType() 等方法,本文重点介绍Type.GetType()。

系统类型/本程序集内的类型

  对于系统自带的类型或本程序集内的类型,可以直接通过类型全名(FullName)来获取,如下所示:

  Type.GetType("System.String") 。

引用的外部类型

  Type.GetType(FullName) 会返回null,需要使用Type 的 AssemblyQualifiedName,即包含类名和程序集信息的限定名,形如:
  Type.GetType(“System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e”)。//用的是.net6

泛型类型

  泛型类型应该分四步,

第一步:获取不带参数的泛型定义,即:

  var genericType = Type.GetType("System.Collections.Generic.Dictionary`2");

第二步:获取参数的类型数组

  var args = genericType.GetGenericArguments();//返回TKey,TValue

第三步:替换args里面的类型为具体类型

  var myArgs = new Type[] { Type.GetType("System.String"), Type.GetType("System.Int32") };

第四步:得到具体的泛型类

  var type = genericType.MakeGenericType(myArgs);

  得到的type的AssemblyQualifiedName 非常的不友好(如下),不建议直接用Type.GetType(AssemblyQualifiedName)这种方式创建:

System.Collections.Generic.Dictionary`2[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.Int32, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e。

用途

  Blazor动态控件DynamicComponent需要给定Type参数,我想让这个参数由外部配置给出,这样就可以把各种控件灵活的放到一个方块里展示了。

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023年全国职业院校技能大赛中职组大数据应用与服务赛项题库参考答案陆续更新中,敬请期待…

2023年全国职业院校技能大赛中职组大数据应用与服务赛项题库参考答案陆续更新中,敬请期待… 武汉唯众智创科技有限公司 2024 年 2 月 联系人:辜渝傧13037102709 题号:试题01 模块三:业务分析与可视化 (一&#xff0…

基于springboot+vue的党员教育和管理系统

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 ​主要内容:毕业设计(Javaweb项目|小程序|Pyt…

SOLIDWORKS参数化设计之工程图更新 慧德敏学

SOLIDWORKS参数化设计不仅仅包括三维模型的参数化设计,还包括工程图的自动更新,由于自动出图仍然存在一定的局限性,不能完美的实现视图的布局及尺寸的标注,因此,现阶段采用的最多的仍然是图纸的更新,也就是…

创作纪念日【第1024天】的感触与期待

我的创作纪念日 1.机缘2.日常3.成就4.收获5.憧憬 1.机缘 2021年的04月份进入新行业了,公司不让用自己的电脑进行办公,也不能带自己的设备,之前记录的笔记查看不太方便,所以想着弄个博客,也尝试过云笔记,最…

Java根据excel模版导出Excel(easyexcel、poi)——含项目测试例子拿来即用

Java根据excel模版导出Excel(easyexcel、poi)——含项目测试例子拿来即用 1. 前言1.1 关于Excel的一般导出2.2 关于easyexcel的根据模版导出 2. 先看效果2.1 模版2.2 效果 3. 代码实现(核心代码)3.1 项目代码结构3.2 静态填充例子…

Springboot项目中定时任务的四种实现方式

文章目录 1. 使用Scheduled注解1.1 时间间隔执行1.2 固定时间点执行 2. 使用EnableScheduling注解启用定时任务3. 实现SchedulingConfigurer接口4. 使用Quartz框架4.1 配置QuartzScheduler4.2 定义Job类和Trigger类 5. 总结 在开发现代应用时,定时任务是一个非常常见…

Peter算法小课堂—动态规划

Peter来啦,好久没有更新了呢 今天,我们来讨论讨论提高组的动态规划。 动态规划 动态规划有好多经典的题,有什么背包问题、正整数拆分、杨辉三角……但是,如果考到陌生的题,怎么办呢?比如说2000年提高组的…

压缩视频大小的软件有哪些?5款软件推荐

压缩视频大小的软件有哪些?随着高清摄像设备的普及和网络速度的不断提升,视频文件变得越来越庞大,动辄数百兆甚至数GB的大小常常让用户在分享和存储时感到头疼。幸运的是,市面上有许多优秀的视频压缩软件可以帮助我们轻松应对这一…

国产服务器操作系统

为何记录 最近的开发工作经常接触到国产服务器操作系统的业务,经常被x86、arm、龙芯、鲲鹏、欧拉...搞得一脸懵逼,遂记之! 操作系统 这里按照应用场景分: 桌面操作系统:主要用于pc,如Windows、macOS、Li…

SpringMVC01、回顾MVC

1、回顾MVC 1.1、什么是MVC MVC是模型(Model)、视图(View)、控制器(Controller)的简写,是一种软件设计规范。是将业务逻辑、数据、显示分离的方法来组织代码。MVC主要作用是降低了视图与业务逻辑间的双向偶合。MVC不是一种设计模式,MVC是一种架构模式。…

ETL数据仓库的使用方式

一、ETL的过程 在 ETL 过程中,数据从源系统中抽取(Extract),经过各种转换(Transform)操作,最后加载(Load)到目标数据仓库中。以下是 ETL 数仓流程的基本步骤&#xff1a…

【物联网应用案例】智能农业的 9 个技术用例

一、农业中的物联网用例 一般而言,农业物联网传感器以及农业物联网应用有多种类型: 1. 气候条件监测 气象站无疑是当今智能农业领域最受欢迎的设备。这款设备集成了多种智能农业传感器,能够在现场对各类数据进行收集,然后迅速将…

动态规划--(算法竞赛、蓝桥杯)--二维费用背包

1、B站视频链接&#xff1a;E15 背包DP 二维费用背包_哔哩哔哩_bilibili #include <bits/stdc.h> using namespace std; int f[101][101]; //f[j][k]第i件物品&#xff0c;体积<j,重量<k的最大价值int main(){int n,V,W;//物品、容量、承重int v,w,val;//体积、重…

搜索算法(算法竞赛、蓝桥杯)--DFS迭代加深

1、B站视频链接&#xff1a;B25 迭代加深 Addition Chains_哔哩哔哩_bilibili 题目链接&#xff1a;Addition Chains - 洛谷 #include <bits/stdc.h> using namespace std; int n,d;//d为搜索的深度 int a[10005];//存储加成的序列bool dfs(int u){//搜索第u层 if(ud)r…

应急响应-常规处置办法

网站中被植入Webshell&#xff0c;通常代表着网站中存在可利用的高危漏洞&#xff0c;攻击者利用这些漏洞&#xff0c;将Webshell写入网站&#xff0c;从而获取网站的控制权。一旦在网站中发现webshell文件&#xff0c;可采取以下步骤进行临时处置。 入侵确定时间 通过在网站…

frp 内网穿透 linux部署版

frp 内网穿透 linux部署版 前提安装 frp阿里云服务器配置测试服务器配置访问公网 前提 使用 frp&#xff0c;您可以安全、便捷地将内网服务暴露到公网&#xff0c;通过访问公网 IP 直接可以访问到内网的测试环境。准备如下&#xff1a; 公网 IP已部署好的测试服务 IP:端口号阿…

浅谈排序算法(冒泡,插入,归并)

对于数据的排序&#xff0c;有多种方法&#xff0c;对应这不同的时间复杂度&#xff08;效率不同&#xff09;。 ​一、冒泡排序&#xff08;Bubble Sort&#xff09; 冒泡排序&#xff08;Bubble Sort&#xff09;是一种简单的排序算法。 算法思路&#xff1a; 1. 从第一对相…

3月5日济南,2024生物发酵展全新起航!助力打造生物产业经济新时代

生物发酵是生物产业的重要组成部分&#xff0c;近年来&#xff0c;我国生物产业发展迅猛&#xff0c;也已广泛应用于食品、农业、医药、饲料、日化、材料等领域&#xff0c;市场前景广阔。2022年5月&#xff0c;国家发改委发布的《“十四五”生物经济发展规划》明确着力做大做强…

“图像处理新篇章,轻松切割纵向长图,每张都精彩!

在数字化时代&#xff0c;图像处理技术日新月异&#xff0c;人们对图片质量的要求也越来越高。为满足这一需求&#xff0c;新一代图像处理技术应运而生&#xff0c;它以其独特的功能和卓越的效果&#xff0c;为用户带来了前所未有的体验。今天&#xff0c;就让我们一起领略这项…

ImportError: cannot import name ‘_update_worker_pids’ from ‘torch._C’

问题描述&#xff1a; 在复现超分辨率算法RNAN&#xff08;EDSR、RCAN同样的环境&#xff09;的时候报错&#xff0c;torch要求是0.4.0版本的。 解决方案&#xff1a; 解决方法1&#xff08;已安装anaconda&#xff09; 1. 打开命令行&#xff08;这个自行查找&#xff09; …