问题描述
我试图将动态对象内部的对象类型转换为作为参数传递的类型。我进行了搜索,但找不到解决该问题的任何具体解决方案。
首先,该类的结构如下:
[DataContract(Namespace = "")]
public class Resultset
{
[DataMember]
public DataTable dt { get; set; }
[DataMember]
public string status { get; set; }
[DataMember]
public string res { get; set; }
[DataMember]
public object retClass { get; set; }
public Resultset()
{
dt = new DataTable();
status = string.Empty;
res = string.Empty;
}
}
Resultset中的retClass对象拥有任何动态的类类型结构。 现在,以下方法将上述类中的API调用结果转换为客户端端的Resultset类:
public string sanitizeData(string apiResponse,Type classType)
{
Resultset rs = new Resultset();
dynamic dSerializedData = null;
try
{
Convert.ChangeType(rs.retClass,classType);
dSerializedData = JsonConvert.DeserializeObject<dynamic>(apiResponse);
rs.retClass = Convert.ChangeType(dSerializedData.retClass.ToObject<typeof(classType)>(),classType);
rs.res = dSerializedData.res;
rs.status = dSerializedData.status;
return JsonConvert.SerializeObject(rs);
}
catch (Exception)
{
throw;
}
}
api响应很容易反序列化为动态类型。但是因为retClass可以是anyClass类型,所以我必须将类型作为参数传递。
rs.retClass = Convert.ChangeType(dSerializedData.retClass.ToObject<typeof(classType)>(),classType);
当我使用ToObject<typeof(classType)>()
方法时,在这里我将变量用作不允许的类型。
当将classType
替换为类的名称时,上面的代码可以正常工作。但是由于retClass
对象本身是动态的,所以我需要一个通用的解决方案。
在这种情况下请帮助我。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)