我尝试将标签添加到组中,因此当我想添加组时,我可以为其添加关联标签。我想要做的是能够返回按标签过滤的组列表。
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; }
}
答案 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服务通信的代码。然后应该明白他们需要调用哪些成员/方法并在合同/服务中标记每个成员/方法(您可能还想考虑将您的合同分离到一个接口,然后将实际的实现保留在一个类中(这将是成为实现该接口的服务。