关闭

关于泛型方法的反射

277人阅读 评论(0) 收藏 举报

        在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 });
        }

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:2219次
    • 积分:49
    • 等级:
    • 排名:千里之外
    • 原创:3篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章存档