我有一个List<dynamic>
,我需要将列表的值和类型传递给服务。
服务代码将如下所示:
Type type = typeof(IList<>);
// Type genericType = how to get type of list. Such as List<**string**>, List<**dynamic**>, List<**CustomClass**>
// Then I convert data value of list to specified type.
IList data = (IList)JsonConvert.DeserializeObject(this._dataSourceValues[i], genericType);
_dataSourceValues:列表中的值
如果列表的类型是动态的(
List<dynamic>
),如何将列表的类型转换为特定类型? 最佳答案
如果我对您的理解正确,那么您有一个List<dynamic>
,并且想创建一个具有动态对象的适当运行时类型的列表吗?
这样的事情会有所帮助:
private void x(List<dynamic> dynamicList)
{
Type typeInArgument = dynamicList.GetType().GenericTypeArguments[0];
Type newGenericType = typeof(List<>).MakeGenericType(typeInArgument);
IList data = (IList)JsonConvert.DeserializeObject(this._dataSourceValues[i], newGenericType);
}
另一方面,我认为您应该重新考虑代码的设计。我确实没有足够的上下文,但是我很好奇您为什么在这里使用动态。拥有
List<dynamic>
基本上意味着您无需关心传入列表的类型。如果您真的在乎类型(看起来像在进行序列化时一样),则可能不应该使用动态类型。