0

我正在尝试将标签添加到组中,因此当我想添加组时,我可以向其添加关联的标签。我试图做的是能够返回按标签过滤的组列表。

    List<Group> Groups = new List<Group>();
    List<Tag> tags = new List<Tag>();
    public void AddTagtoGroup(Group group, Tag tag)
    {
        group.GroupName(tag.Add);
        return Groups with tags or tags with groups 
    }

这是组和标签的数据协定:

[DataContract(Name = "Group")]
public class Group
{

    public Group() // not sure if this has to have a datamember
    {
        Tags = new List<Tag>();
    }
    [DataMember(Name = "GroupName")]
    public string GroupName { get; set; }
    public List<Tag> Tags { get; set; } // datamember or not?

}
[DataContract(Name = "Tag")]
public class Tag
{
    [DataMember(Name = "TagName")]
    public string TagName { get; set; }
}
4

1 回答 1

2

我只是对代码有点困惑:group.GroupName(tag.Add). 您是否尝试重置您的群组的群组名称?tag.Add 方法的作用是什么?我原以为您可能希望在您的组中使用 Add 方法将标签添加到当前List<Tag> Tags列表中,如下所示:

group.Add(tag)

反而。或者,如果您需要首先在Groups列表中找到正确的组,您可能更愿意传入 GroupName 并进行搜索,这样您将得到:

public void AddTagtoGroup(string groupName, Tag tag)
{
    Group group = FindGroupByName(groupName);
    if (group != null) {
        group.Add(tag);
    }
}

FindGroupByName你将浏览你的Groups列表并检查每个人的名字与提供的名字。或者您可以使用组的 HashSet 或字典来加速该部分。然后为你的Groups.

回复您的问题:

  • 如果需要在客户端调用它,您只需将Group()构造函数标记为DataMember
  • 是的,标签列表需要标记为DataMember,我认为,从您的代码中,客户端需要它

您可能需要更具体一点,这是将 a 添加TagGroup客户端吗?为了使这一点更清楚,您将在适当GroupProxy的情况下使用TagProxy。在您的代码中使用它们,它们就是与 WCF 服务对话的那些。然后应该很明显他们需要调用哪些成员/方法并标记合同/服务中的每个成员/方法(您可能还需要考虑将您的合同分离到一个接口,然后将实际实现保留在一个类中(这将成为实现该接口的服务)。

于 2012-04-06T21:50:49.990 回答