Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.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
C#对象转换为字典<;字符串,对象>;_C# - Fatal编程技术网

C#对象转换为字典<;字符串,对象>;

C#对象转换为字典<;字符串,对象>;,c#,C#,我的方法 parms.ValidationObject = new { validations = new Dictionary<string, object>() { { parms.JsonObjectName, modelValidations } } }; return parms.ValidationObject; 但我明白了 无法从“对象”转换为“System.Collections.Generic.IEnumerable>” 对字典的简单强制转换不起作用。我能

我的方法

parms.ValidationObject = new { validations = new Dictionary<string, object>() { { parms.JsonObjectName, modelValidations } } };
    return parms.ValidationObject;
但我明白了

无法从“对象”转换为“System.Collections.Generic.IEnumerable>”


字典的简单强制转换不起作用。我能做什么?

在将其传递给
Concat
之前,您需要对
System.Collections.Generic.IEnumerable
进行验证,因为这是它所期望的

同时进行以下更改:

parms.ValidationObject = new Dictionary<string, object>() { parms.JsonObjectName, modelValidations };
parms.ValidationObject=new Dictionary(){parms.JsonObjectName,modelvidations};

在将其传递给
Concat
之前,您需要对
System.Collections.Generic.IEnumerable
进行验证,因为这是它所期望的

同时进行以下更改:

parms.ValidationObject = new Dictionary<string, object>() { parms.JsonObjectName, modelValidations };
parms.ValidationObject=new Dictionary(){parms.JsonObjectName,modelvidations};

您不清楚,但当您说“我的方法”时:

parms.ValidationObject=new{validations=newdictionary(){{{parms.JsonObjectName,modelvidations}};
返回parms.ValidationObject;
我假设您的意思是上面的代码是方法的实现,
GetValidations
。如果是这样,那么问题在于方法的返回类型可能是
对象
,因为它不能是
parms.ValidationObject
的真实类型,因为这是一种匿名类型,不能从方法中泄漏出来

因此,我认为您真正的问题在于,您试图从外部方法使用在该匿名类型上定义的
验证
属性。真的,你应该后退一步,停止这样做。如果您想在声明匿名类型的方法之外使用它,这意味着您犯了一个错误


相反,可以使用
Tuple
变量来返回所需的值,使用
out
参数,定义一个新的具体类型,或者只返回字典(
parms.ValidationObject.validations
)本身——完全不清楚为什么在这里使用匿名类型,因为您只定义了一个属性。在任何情况下,您都不应尝试在声明类型的方法之外以静态方式与匿名类型交互。

您不清楚,但当您说“我的方法”时:

parms.ValidationObject=new{validations=newdictionary(){{{parms.JsonObjectName,modelvidations}};
返回parms.ValidationObject;
我假设您的意思是上面的代码是方法的实现,
GetValidations
。如果是这样,那么问题在于方法的返回类型可能是
对象
,因为它不能是
parms.ValidationObject
的真实类型,因为这是一种匿名类型,不能从方法中泄漏出来

因此,我认为您真正的问题在于,您试图从外部方法使用在该匿名类型上定义的
验证
属性。真的,你应该后退一步,停止这样做。如果您想在声明匿名类型的方法之外使用它,这意味着您犯了一个错误


相反,可以使用
Tuple
变量来返回所需的值,使用
out
参数,定义一个新的具体类型,或者只返回字典(
parms.ValidationObject.validations
)本身——完全不清楚为什么在这里使用匿名类型,因为您只定义了一个属性。在任何情况下,都不应尝试在声明类型的方法之外以静态方式与匿名类型交互。

1)
ValidationObject
不是您所说的
对象的直接内容。它是匿名类型。2) 什么是
GetValidations(nextParms)
1)
ValidationObject
的返回类型,正如您所说,它不是
对象的直接输入。它是匿名类型。2) 
GetValidations(nextParms)
的返回类型是什么?你怎么知道
validations
的类型是什么?因为OP说他的方法在顶部返回它。然后他试图将它与另一本词典连接起来,错误也表明了这一点。你的评论也很有用,因为它不是dictionary的直接实例。你怎么知道
验证的类型是什么?因为OP说他的方法在顶部返回它。然后他试图将它与另一本词典连接起来,错误也表明了这一点。你的评论也很有帮助,因为它不是字典的直接实例。
parms.ValidationObject = new { validations = new Dictionary<string, object>() { { parms.JsonObjectName, modelValidations } } };
    return parms.ValidationObject;