[C#] 用反射调用模板函数,用给定类限定名解析json

public static class JsonOperation
{
    private static readonly JavaScriptSerializer serializer = new JavaScriptSerializer();

    public static string Serialize(object obj)
    {
        return serializer.Serialize(obj);
    }

    public static T Deserialize<T>(string json)
    {
        return serializer.Deserialize<T>(json);
    }

    public static object Deserialize(string typeFullName, string json)
    {
        return typeof(JsonOperation)
            .GetMethod("Deserialize", new[] { typeof(string) })
            .MakeGenericMethod(Type.GetType(typeFullName))
            .Invoke(null, new object[] { json });
    }
}

注:
(1)GetMethod用来获取指定类的某个函数,第一个参数是函数名,第二个参数是函数的参数类型列表。
(2)MakeGenericMethod指定范型方法的类型参数,返回一个MethodInfo对象。
(3)Invoke这里用来调用实例方法,还可以用来调用类方法。如果调用的是实例方法,Invoke的第一个参数是该实例。如果调用类方法,Invoke的第一个参数是null

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 人生苦多,快来 Kotlin ,快速学习Kotlin! 什么是Kotlin? Kotlin 是种静态类型编程...
    任半生嚣狂阅读 26,258评论 9 118
  • 整体Retrofit内容如下: 1、Retrofit解析1之前哨站——理解RESTful 2、Retrofit解析...
    隔壁老李头阅读 4,621评论 2 12
  • 一:java概述:1,JDK:Java Development Kit,java的开发和运行环境,java的开发工...
    ZaneInTheSun阅读 2,686评论 0 11
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 11,096评论 6 13
  • 你的身旁,你的眼中,都是谁? (一) 青筠缓缓睁开双眼,已经是早晨了,阳光照在脸上仿佛一双手一般轻柔地抚摸着她的脸...
    十四行丶阅读 535评论 4 1