前景提要
为了避免 A-B problems,我先描述我的原始问题
服务端返回形如 { "code": 0, "data": { "foo": "bar" } }
的 json 数据给客户端( vb.net , json 用的是 newton 的包) 客户端希望用类似于这样的签名方式的函数获取数据: Dim data as CustomData = Request(config, CustomData)
Request 具有这样的函数签名: Function Request(byVal config as RequestConfig, byVal T as Type) as T
将 json 解包的类型传过去: Function Request(byVal config as RequestConfig, byVal T as Type) as T ...(request...) Dim data as T = JsonConvert.DeserializeObject(of Response_of_T).data return data End Function
我想请教的问题: 1 如何动态的传一个类型给一个函数并且作为返回值? 实现 Request 这个函数
2 如何动态的创建一个类,这个类的某个成员可以根据模板创建不同的类型? 形如 class Response<T> Public code as Integer Public data as T End Class
我说下我目前的解决方案: class Response Public code as Integer Public data as String End Class
服务端吐数据的时候将 data 再 json_encode 一次, 解包的时候直接将 data 作为 string 返回给业务代码,业务代码根据上下文的 T 再解包一次
如果解决了问题 1,Request 可以接受一个 T,二次解包在 request 里面进行返回 T,但是服务端还是要再 json_encode 一次 data,数据会变长而且排查问题很不方便
谢谢大家!