Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 在c中检查动态对象是单值还是数组#_.net - Fatal编程技术网

.net 在c中检查动态对象是单值还是数组#

.net 在c中检查动态对象是单值还是数组#,.net,.net,检查动态对象是数组还是字符串/int/etc的最佳方法是什么 这是我的解决方案,很有效,但我不确定try/cach解决方案是否是最好的方法 我还尝试了使用.GetType()方法获取类型,但没有成功 列表应包含简单的数据类型,可转换为字符串 private Dictionary<string, List<object>> GetValues(List<dynamic> dynamicList) { Dictionary<string, List&

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

这是我的解决方案,很有效,但我不确定try/cach解决方案是否是最好的方法

我还尝试了使用
.GetType()
方法获取
类型,但没有成功

列表应包含简单的数据类型,可转换为字符串

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;
}
private Dictionary GetValues(List dynamicList)
{
词典;
returnDictionary=newdictionary();
foreach(dynamicList中的动态项)
{
var name=item.name;
动态值=项目值;
尝试
{
字符串sValue=(字符串)值;
添加(item.Name,新列表{sValue});
}
抓住
{
添加(item.Name,新列表((IEnumerable)值));
}
}
返回字典;
}

尝试使用“as”关键字

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

尝试使用“as”关键字

string sValue = value as string;
if(sValue != null) {
    //do stuff
}
使用is关键字

if(value is string)
{
    string StrVal = value as string; 
}
使用is关键字

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

“但那没用”并不能告诉我们你看到了什么
GetType()
将为您提供该类型,但我们不知道您试图执行什么操作或发生了什么。如果您想将值强制转换为字符串,那么您应该只填充一个
列表
…您应该在C#中使用反射…检查(a是否是某个类型),然后将其强制转换为该类型
列表
是反序列化Json的一部分。
.GetType()
方法返回
Name=“JValue”FullName=“Newtonsoft.Json.Linq.JValue”
我找到了一个解决方案来检查它是否是字符串<代码>如果(value.Type==Newtonsoft.Json.Linq.JTokenType.String)
可能重复的“但那没有起作用”不会告诉我们您看到了什么
GetType()
将为您提供该类型,但我们不知道您试图执行什么操作或发生了什么。如果您想将值强制转换为字符串,那么您应该只填充一个
列表
…您应该在C#中使用反射…检查(a是否是某个类型),然后将其强制转换为该类型
列表
是反序列化Json的一部分。
.GetType()
方法返回
Name=“JValue”FullName=“Newtonsoft.Json.Linq.JValue”
我找到了一个解决方案来检查它是否是字符串
if(value.Type==Newtonsoft.Json.Linq.JTokenType.String)
此答案的可能重复项看起来正确,但要使其成为“高质量答案”,您应该解释
is
运算符及其工作原理。此答案看起来正确,但要使其成为“高质量答案”,您应该解释
is
运算符及其工作原理。