gpt4 book ai didi

c# - 字典中的响应没有 'GetEnumerator' 的定义

转载 作者:太空宇宙 更新时间:2023-11-03 12:09:26 25 4
gpt4 key购买 nike

我是 C# 的新手,但我找不到对我的问题的明确回应。我的代码是:

myDict.Add("BTC",jsonResponse.BTC);
myDict.Add("LTC", jsonResponse.LTC);
myDict.Add("DASH", jsonResponse.DASH);
myDict.Add("ETH", jsonResponse.ETH);

它的使用:

using System;
using System.Collections;


namespace helloApp

{

public class Posts
{

public string BTC { get; set; }
public string DASH { get; set; }
public string ETH { get; set; }
public string LTC { get; set; }

}


}

我想通过以下方式自动生成:

foreach(string x in jsonResponse){
Console.WriteLine(x);
}

但是我有一个错误:

Error CS1579: foreach statement cannot operate on variables of type 'Posts' because 'Posts' does not contain a public definition for 'GetEnumerator' (CS1579) (helloApp)

  • //我想在我的字典中自动搜索。

编辑:

我想使用公共(public)类 Posts 中的项目生成 myDict,fe:

现在我在做

myDict.Add("BTC",jsonResponse.BTC);
myDict.Add("LTC", jsonResponse.LTC);
myDict.Add("DASH", jsonResponse.DASH);
myDict.Add("ETH", jsonResponse.ETH);

我想做foreach:

myDict.Add(string X,jsonResponse.X)

自动生成与 myDict.Add("BTC"... etc... ) 相同的结果

编辑:

根据回答,感谢帮助:

你必须创建一个字典变量:

            var myDict = new Dictionary<string, string>();

然后向myDict添加元素:

foreach (var prop in jsonResponse.GetType().GetProperties())
{
if (!myDict.ContainsKey(prop.Name))
myDict.Add(prop.Name, prop.GetValue(jsonResponse)?.ToString());
}

你可以使用它:

        foreach (var item in myDict)
{
Console.WriteLine(item.Key + " " + item.Value);
}

因为微软的教程让它变得比现在更难。

最佳答案

您可以尝试通过 GetProperties 方法使用反射来获取所有属性,然后将它们添加到 Dictionary 中。

var myDict = new Dictionary<string, string>();

foreach (var prop in jsonResponse.GetType().GetProperties())
{
if (!myDict.ContainsKey(prop.Name))
myDict.Add(prop.Name, prop.GetValue(jsonResponse)?.ToString());
}

或者您可以使用 linq ToDictionary 来实现的简单方法。

var myDict1 = jsonResponse.GetType()
.GetProperties()
.ToDictionary(x => x.Name, x => x.GetValue(jsonResponse)?.ToString());

如果你想获取值和键,你需要从字典中迭代,因为 foreach 实现了 iterator pattern ,哪个对象需要实现 IEnumerable 接口(interface),并且该集合具有迭代器的行为。

foreach (var item in myDict)
Console.WriteLine(item.Key + " "+ item.Value);

关于c# - 字典中的响应没有 'GetEnumerator' 的定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53140172/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com