关于泛型方法的反射

本文介绍如何在C#中使用反射调用带有泛型参数的方法,并通过实例展示了实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        在c# 中,有时候需要用到反射区调用带有泛型的方法。如例子:


public string CheckReflection<T>(string propertyName, T propertyValue) where T : struct

        {
            throw new InvalidOperationException(string.Format("Property {0} is not supported.", propertyName));

        }

在调用这个方法的时候,需要System.Reflection.MethodInfo 和Activator

      如下方法




        private string CallByReflection(
            object scanProcedure,          // scanProcedure 是你要反射对象的实例
            string propertyName,             // 参数一
            object propertyValue)        // 参数二
        {
            Type type = scanProcedure.GetType(); 
            object reflectTest = Activator.CreateInstance(type);
            // Just for simplicity, assume it's public etc
            MethodInfo method = typeof(反射的className).GetMethod("方法名");     //调用方法
            MethodInfo generic = method.MakeGenericMethod(propertyValue.GetType());
            return (string)generic.Invoke(reflectTest, new object[] { propertyName, propertyValue });
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值