检查c#中的动态对象是单个值还是数组

时间:2015-11-19 08:14:27

标签: .net

检查动态对象是数组还是字符串/ int / etc的最佳方法是什么?

这是我的解决方案,但是我不确定try / cach解决方案是否是最佳方式。

我也尝试过使用Type方法获取.GetType(),但这没效果。

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;
}

2 个答案:

答案 0 :(得分:0)

尝试使用'as'关键字。

string sValue = value as string;
if(sValue != null) {
    //do stuff
}

答案 1 :(得分:0)

使用is关键字

if(value is string)
{
    string StrVal = value as string; 
}