【发布时间】:2015-11-19 16:35:52
【问题描述】:
检查动态对象是 Array 还是 string/int/etc 的最佳方法是什么?
这是我的解决方案,可行,但我不确定 try/cach 解决方案是否是最好的方法。
我也尝试过使用.GetType() 方法获取Type,但没有奏效。
List<object> 应该包含简单的数据类型,可以转换为字符串。
private Dictionary<string, List<object>> GetValues(List<dynamic> dynamicList)
{
Dictionary<string, List<object>> returnDictionary;
returnDictionary= new Dictionary<string, List<object>>();
foreach (dynamic item in dynamicList)
{
var name = item.Name;
dynamic value = item.Value;
try
{
string sValue = (string)value;
returnDictionary.Add(item.Name, new List<object> { sValue });
}
catch
{
returnDictionary.Add(item.Name, new List<object>((IEnumerable<object>)value));
}
}
return returnDictionary;
}
【问题讨论】:
-
“但没用”并没有告诉我们您所看到的任何信息。
GetType()会给你类型,但我们不知道你试图做什么或发生了什么。如果你想让一个值 castable 到字符串,那么你应该只填充一个List<string>... -
您应该在 C# 中使用反射 ...检查是否(A 是某种类型),然后将其转换为该类型
-
List<dynamic>是反序列化 Json 的一部分。.GetType()方法返回Name="JValue" FullName="Newtonsoft.Json.Linq.JValue" -
我找到了一个解决方案来检查它是否是一个字符串。
if(value.Type == Newtonsoft.Json.Linq.JTokenType.String)
标签: .net