我目前正在研究测验应用程序,并且遇到了一些问题。
我有一个User类,该类被启动,其中包含两个提出的问题列表,一个是他们自己的答案,一个是他们对其他同事的答案。
public class User
{
public List<Answer> AAnswers { get; private set; }
public List<Answer> BAnswers { get; private set; }
public string Name { get; set; }
public User()
{
Name = "Player";
AAnswers = new List<Answer>();
BAnswers = new List<Answer>();
}
public User(string name):this()
{
Name = name;
}
}
然后,我有一个名为Quiz的类,其中包含有关活动的许多其他信息。我将把关键信息放进去。
在课堂上,我使用Concat构建另外两个列表,每个用户自己和同事的答案结合在一起。现在,我正在使用一个列表来存储这些列表(AllUserAswers和AllColleagueAnsers),但是,这无法让我访问最初回答该问题的用户。
我尝试将添加User字段添加到Answer类和构造函数中,但是NewtonSoft一直在生成自我引用循环错误,因此我认为这不是明智的做法。 我将如何创建用户列表和答案。我需要使用元组或类似的吗?当我在努力争取想法时。
任何帮助将不胜感激。
答案 0 :(得分:1)
我认为有几种方法可以在不过度破坏当前设计的情况下进行操作。
您可以将[JsonIgnore]
添加到您的User属性。假设您不需要json来保留用户,那将是最快和最简单的。
另一个快速的解决方案是将Id
属性添加到您的User
类中。然后,在您的Answer
类中,您可以拥有一个UserId
属性。
public class User {
public Guid Id {get;}
public User() {
Id = Guid.NewGuid();
}
}
public class Answer {
public Guid UserId{get;set;}
public User User => AllUsers.Single(x => x.Id == UserId);
}
类似的事情可能会起作用。我尚未对其进行测试,它确实取决于您是否可以访问AllUsers或您的Answer类中的某些内容。