类链接wcf

时间:2012-04-06 20:20:00

标签: c# wcf

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

    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; }
}

1 个答案:

答案 0 :(得分: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列表,并根据提供的名称检查每个人的姓名。或者您可以使用组的哈希集或字典来加速该部分。然后为你的Groups制作一个吸气剂。

回答你的问题:

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

您可能需要更具体一点,这是将Group添加到GroupProxy客户端吗?为了更清楚,您将在适当的时候使用TagProxy和{{1}}。在您的代码中使用这些代码,它们是与WCF服务通信的代码。然后应该明白他们需要调用哪些成员/方法并在合同/服务中标记每个成员/方法(您可能还想考虑将您的合同分离到一个接口,然后将实际的实现保留在一个类中(这将是成为实现该接口的服务。