首页 > 编程语言 >c#反射调用泛型类泛型方法

c#反射调用泛型类泛型方法

时间:2024-10-09 14:11:26浏览次数:8  
标签:c# object DateTime 类泛 typeof 泛型 new Type

FileName.cs文件

namespace ZHAOXI.DBHlper
{
    class FileName
    {
        public void Show<T, W, Q>(T t, W w, Q q)
        {
            Console.WriteLine("这里是" + this.GetType().Name + " " + "普通类里面的泛型方法: t " + t + " w " + w + " q " + q);
        }
    }

    class Gencts<T, W, Q>
    {
        public void Show(T t, W w, Q q)
        {
            Console.WriteLine("这里是" + this.GetType().Name + " " + "泛型类里面的泛型方法: t " + t + " w " + w + " q " + q);
        }
    }

    class Mguntpund<T>
    {
        public void Show<W, Q>(T t, W w, Q q)
        {
            Console.WriteLine("这里是" + this.GetType().Name + " " + "泛型类里面的泛型方法第二种情况: t " + t + " w " + w + " q " + q);
        }
    }
}

Program.cs类

using System.Reflection;
//反射调用泛型类泛型方法
Assembly assembly1 = Assembly.LoadFrom("ZHAOXI.DBHlper.dll");

//反射调用普通类里面的泛型方法
Type fileName = assembly1.GetType("ZHAOXI.DBHlper.FileName");
MethodInfo method = fileName.GetMethod("Show");
MethodInfo constructedMethod = method.MakeGenericMethod(new Type[] { typeof(string), typeof(int), typeof(DateTime) });
object obj1 = Activator.CreateInstance(fileName);
constructedMethod.Invoke(obj1, new object[] { "龙卷风摧毁停车场", 10086, DateTime.Now });

//反射调用泛型类里面的泛型方法
Type gencts = assembly1.GetType("ZHAOXI.DBHlper.Gencts`3");
Type makeGenericType = gencts.MakeGenericType(new Type[] { typeof(int), typeof(string), typeof(DateTime) });
MethodInfo constructedMethod1 = makeGenericType.GetMethod("Show");
object obj2 = Activator.CreateInstance(makeGenericType);
constructedMethod1.Invoke(obj2, new object[] { 10086, "龙卷风摧毁停车场", DateTime.Now });

//反射调用泛型类第二种情况
Type mguntpund = assembly1.GetType("ZHAOXI.DBHlper.Mguntpund`1");
Type mguntpundType = mguntpund.MakeGenericType(new Type[] { typeof(string) });
MethodInfo mguntpundMethod = mguntpundType.GetMethod("Show");
MethodInfo mguntpundInfo = mguntpundMethod.MakeGenericMethod(new Type[] {typeof(DateTime),typeof(int)});
object obj3 = Activator.CreateInstance(mguntpundType);
mguntpundInfo.Invoke(obj3, new object[] {"龙卷风摧毁停车场", DateTime.Now, 10086});

Console.ReadKey();

允许结果

 

标签:c#,object,DateTime,类泛,typeof,泛型,new,Type
From: https://www.cnblogs.com/tlfe/p/18454106

相关文章

  • 1、Elasticsearch安装
    Elasticsearch安装1.1什么是elasticsearch?ElasticSearch是一个分布式,高性能、高可用、可伸缩的搜索和分析系统。ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTfulweb接口。Elasticsearch是用Java开发的,并作为Apache许可......
  • 03. defer和switch
    1.switchswitch语句是编写一连串if-else语句的简便方法。它运行第一个case值,值等于条件表达式的子句。Go的switch语句类似于C、C++、Java、JavaScript和PHP中的,不过Go只会运行选定的case,而非之后所有的case。在效果上,Go的做法相当于这些语言中为每个case......
  • 通过MySQL Workbench 将 SQL Server 迁移到GreatSQL
    通过MySQLWorkbench将SQLServer迁移到GreatSQL一、概述MySQLWorkbench提供了可以将MicrosoftSQLServer的表结构和数据迁移到GreatSQL的功能,此次将通过MySQLWorkbench将SQLServer的数据迁移到GreatSQL。本文章只是简单演示一下单张表的迁移,如果在项目中使用请根据......
  • why do we need 'select…for share' instead of a simple 'select'
    (Fromchatgpt)AsimpleSELECTqueryinPostgreSQLoperatesundertheMVCC(Multi-VersionConcurrencyControl)model,whichallowsittoreaddatawithoutlockingtherows.Thismeansitcanseeasnapshotofthedataatthestartofthetransaction,rega......
  • C++ day04(友元 friend、运算符重载、String字符串)
    目录【1】友元friend1》概念2》友元函数 3》友元类 4》友元成员函数 【2】运算符重载1》概念2》友元函数运算符重载 ​编辑 3》成员函数运算符重载4》赋值运算符与类型转换运算符重载 5》注意事项【3】String字符串类【1】友元friend1》概念定义:......
  • 《 C++ 修炼全景指南:十四 》大数据杀手锏:揭秘 C++ 中 BitSet 与 BloomFilter 的神奇性
    本篇博客深入探讨了C++中的两种重要数据结构——BitSet和BloomFilter。我们首先介绍了它们的基本概念和使用场景,然后详细分析了它们的实现方法,包括高效接口设计和性能优化策略。接着,我们通过对比这两种数据结构的性能,探讨了在不同应用场景中的选择依据。最后,博客还涵盖......
  • SC02E —— 2按键带自校正功能的容性触摸感应器
    SC02E是2按键带自校正功能的容性触摸感应器,高性能,低功耗,最低工作电压1.65V,待机2uA,有超强稳定性和抗干扰能力。触摸按键相比传统按键,不仅结构设计简单美观,而且防水、抗干扰、一致性好,在节约成本的同时实现产品科技感和质感的提升,所以广泛应用在家居家电、健康医疗、消费电子等领......
  • 易基因: Nat Commun:中南大学曾朝阳/熊炜/龚朝建团队利用ChIP-seq等揭示头颈鳞癌免疫逃
    大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。免疫逃逸是癌症进展的关键里程碑,是肿瘤免疫治疗的理论基础。头颈部鳞状细胞癌((headandnecksquamouscellcarcinoma,HNSCC))是全球最常见的恶性肿瘤之一,传统治疗选择包括手术切除、放疗和化疗。最近,利用免疫检查点......
  • Wardell Stephen Curry
    ps:数据截止至2021年初,后续会出最新的库有引力从2004年开始,金州勇士开始了一段波澜壮阔的王朝,而库里是让这一切成为可能的基础。如今看来,这段辉煌的金州岁月,是基于库里划时代的投篮艺术和比赛风格而确立,他的三分威胁和殿堂级的牵制力,为科尔的体系带来了更多的支撑。无须再去......
  • 在K8S中,初始化容器(initcontainer)作用是什么?
    在Kubernetes(K8s)中,初始化容器(InitContainer)是一种特殊的容器,它在Pod的主容器启动之前运行,并执行一系列初始化任务。以下是关于初始化容器作用的详细解释:1.定义与特性定义:初始化容器是定义在Pod规格中的一个或多个容器,它们在Pod中的任何应用程序容器(即普通的容器)启动之前执行。......