簡體   English   中英

C#對象轉換為Dictionary <string, object>

[英]C# object cast to Dictionary<string, object>

我的方法

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

其中ValidationObjectObject類型

后來我叫這個方法

var modelValidations = new Dictionary<string, object>();
var validations = GetValidations(nextParms);
modelValidations = modelValidations.Concat(validations).ToDictionary(x => x.Key, x => x.Value);

但我明白了

無法從“對象”轉換為“ System.Collections.Generic.IEnumerable>”

簡單轉換為Dictionary<string, object>無效。 我能做什么?

您需要將驗證傳遞給System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<string, object>>然后再將其傳遞給Concat因為這是期望的。

也進行此更改:

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

您不清楚,但是當您說“我的方法”時:

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

我假設您的意思是上面的代碼是方法GetValidations 如果是這樣,那么問題就在於方法的返回類型可能是object因為它不能是parms.ValidationObject真實類型,因為它是一個匿名類型,不會泄漏到方法之外。

因此,我認為您真正的問題是,您正在嘗試使用外部方法使用在該匿名類型上定義的validations屬性。 確實,您應該退后一步,停止這樣做。 如果要在聲明該方法的方法之外使用匿名類型,則意味着您犯了一個錯誤。

相反,要么使用一個Tuple變異,返回所需的值,使用out參數,干脆定義一個新的具體類型,或只返回字典( parms.ValidationObject.validations )本身-它完全不清楚為什么您使用的是匿名類型因為您只定義了一個屬性 在任何情況下,您都不應嘗試在聲明類型的方法之外以靜態方式與匿名類型進行交互。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM