为了避免 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,数据会变长而且排查问题很不方便
谢谢大家!
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.