填写另一个班级的名单

时间:2017-06-13 09:49:09

标签: c#

我有这些课程:

class Game
    {
        public List<Participant> Participants = new List<Participant>();
    }

class Participant
    {
        public int ChampionId { get; set; }
        public string SummonerName { get; set; }
        public int SummonerId { get; set; }
    }

public class APICalls
    {
        //private Game game;

        private string GetResponse(string url)
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

            WebResponse response = request.GetResponse();

            using (Stream responseStream = response.GetResponseStream())
            {
                StreamReader reader = new StreamReader(responseStream, Encoding.UTF8);
                return reader.ReadToEnd();
            }
        }

        public void GetParticipants()
        {
            // create a string from the JSON output
            var jsonString = GetResponse("https://euw1.api.riotgames.com/lol/league/v3/positions/by-summoner/27528610?api_key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");

            // fill the Participants list from the Game class with participants based on the contents of the jsonString variable
            Game.Participants = JsonConvert.DeserializeObject<Game>(jsonString);


        }

    }

我想使用API​​Calls类中的GetParticipants方法填充Game类中的Participants列表。我的问题是我无法从这个课程中访问该列表。

我想将所有API代码保存在一个类文件中,这就是我创建这个类的原因。

我做错了什么?

3 个答案:

答案 0 :(得分:3)

您需要Game类的实例才能使用它(非静态)字段:

var game = new Game();
game.Participants = JsonConvert.DeserializeObject<Game>(jsonString);

如果您只想要一个实例,则可以创建字段static,那么您的代码就可以运行。但请注意,如果多个线程同时访问该列表,您可能会遇到问题。

答案 1 :(得分:2)

创建Game的对象,并使用Participants引用game.Participants,如下所示:

Game game = new Game();
game.Participants = JsonConvert.DeserializeObject<Game>(jsonString);

或者

将参与者列表设为静态:

class Game
{
    public static List<Participant> Participants = new List<Participant>();
}

然后使用Participants

直接访问Game.Participants列表

答案 2 :(得分:1)

参与者不是静态财产。您需要声明该类的实例。您似乎也试图将JSON设想成一个游戏&#34;游戏&#34;对象,但随后将其分配给Participants属性。我假设实际上JSON正在返回参与者列表并相应地进行修改,但情况可能并非如此。

Game game = new Game();
game.Participants = JsonConvert.DeserializeObject<List<Participant>>(jsonString);