将动态对象类型转换为C#中传入参数的类类型

问题描述

我试图将动态对象内部的对象类型转换为作为参数传递的类型。我进行了搜索,但找不到解决该问题的任何具体解决方案。

首先,该类的结构如下:

[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 (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...