我正在尝试将用户添加到其他用户的好友列表中。当我运行代码时,一切都按预期工作。除了由于某种原因没有将对象添加到列表中。
当我单击Windows窗体客户端应用程序中具有服务引用服务的按钮时,一切都开始了。这里AddFriend方法返回true。
private void buttonAddFriend_Click(object sender, EventArgs e)
{
if (SocialNetwork.AddFriend(curUser, textBox1.Text)) // SocialNetwork an instance of SocialNetworkServiceClient
{
listBoxFriends.Items.Clear();
GetFriendList();
messageLabel.Text = "Friend " + textBox1.Text + " added";
Debug.WriteLine(curUser.Friends.Count); //curUser is an User object of the current logged in user. The object is passed by the login form to this form.
}
else
{
messageLabel.Text = "error";
}
}
private void GetFriendList()
{
foreach (User u in curUser.Friends)
{
Debug.WriteLine("User found");
listBoxFriends.Items.Add("Name: " + u.Username);
}
}
这是我的Service类,使用AddFriend方法,该方法使用用户类中的方法。
public class SocialNetworkService : ISocialNetworkService
{
static SocialNetwork service = new SocialNetwork();
public User Login(string user, string pass)
{
return service.Login(user, pass);
}
public Boolean Register(string user, string pass)
{
return service.RegisterUser(user, pass);
}
public Boolean AddFriend(User user, string friend)
{
foreach (User u in service.AllUsers) //The SocialNetwork class contains a List {get; private set;} of all users.
{
if (u.Username.Equals(friend))
{
return user.AddFriend(u);
}
}
return false;
}
}
这是我的用户类:
[DataContract]
public class User
{
[DataMember]
public string Username { get; private set; }
[DataMember]
public string Password { get; private set; }
[DataMember]
public List<User> Friends { get; set; }
public User(string user, string pass)
{
this.Username = user;
this.Password = pass;
Friends = new List<User>();
}
public Boolean AddFriend(User user)
{
foreach (User u in Friends)
{
if (u.Username.Equals(user.Username))
{
return false;
}
}
Friends.Add(user);
return true;
}
}
我遗漏了一些无关紧要的东西,比如set方法。
由于某种原因,方法返回true,调试屏幕显示用户已添加到列表中。但是当我试图获取列表或添加另一个朋友时,列表再次为空。
希望你们能帮帮我。