首页 新闻 会员 周边 捐助

序列化时的传参,xxx是变量,但此处被当作类型来使用

0
悬赏园豆:10 [已解决问题] 解决于 2020-09-27 10:21

我需要传一个字符串反序列化:

Type _type = Assemblie.GetType("Calculator");
object _instance = Activator.CreateInstance(_type);

var obj2 = Newtonsoft.Json.JsonConvert.DeserializeObject<_instance>(jsonstring);

错误:

“_instance”是 变量,但此处被当做 类型 来使用

 

应该如何实现呀?_instance这个参数怎么传入?


         


        
c#
denli的主页 denli | 初学一级 | 园豆:19
提问于:2020-09-27 09:51
< >
分享
最佳答案
0

反序列化为什么要自己创建实例? 把Type传进去就会自己创建实例

object obj = Newtonsoft.Json.JsonConvert.DeserializeObject(jsonstring, _type);

泛型参数要直接填类型, 类似于这样

var obj = Newtonsoft.Json.JsonConvert.DeserializeObject<Calculator>(jsonstring);
收获园豆:10
拓拓 | 小虾三级 |园豆:1055 | 2020-09-27 10:07
其他回答(3)
0
 var obj2 = (Calculator)Newtonsoft.Json.JsonConvert.DeserializeObject<Calculator>(jsonstring);
E行者 | 园豆:1811 (小虾三级) | 2020-09-27 10:02

Calculator是泛型的,可以理解成T,我这里是举例,传入的是一个字符串,通过反射得到它的实例

支持(0) 反对(0) denli | 园豆:19 (初学一级) | 2020-09-27 10:16
0

看不懂
var obj2 = Newtonsoft.Json.JsonConvert.DeserializeObject<Calculator>(jsonstring);

不知道风往哪儿吹 | 园豆:2037 (老鸟四级) | 2020-09-27 10:02
0

我也遇到这个问题了,请问您怎么解决的呀?

mozheng | 园豆:202 (菜鸟二级) | 2021-01-27 12:52
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册