2012-04-06 22 views
0

我試着標籤添加到組,所以當我想補充一組我可以關聯的標籤添加到它。我試圖做的是能夠返回按標籤過濾的組列表。類鏈接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; } 
} 
+0

如果您希望讓WCF消息中包含的'Tags'屬性通過線路發送,那麼**是**,它必須用'[[ DataMember]屬性,如果你用'[DataMember]'屬性修飾你的類,那麼**只有標有'[DataMember]'**的內容纔會被序列化爲WCF信息。 – 2012-04-06 20:42:09

+0

怎麼來一個group.GroupName tag.Add)可以添加標籤。o_O – wonde 2012-04-06 22:14:50

回答

2

我只是受了一點的代碼混淆:group.GroupName(tag.Add)。你是否想重置你的組的組名?那麼tag.Add方法做了什麼?我還以爲你會喜歡你的小組中一個Add方法標籤添加到當前列表List<Tag> Tags,像這樣:

group.Add(tag) 

代替。或者,如果你需要找到合適的組先在你Groups列表中,您可能更喜歡剛剛在組名通過,併爲它做一個搜索,所以你會得到:

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

FindGroupByName你會去通過您的Groups列表並檢查每個人的姓名與所提供的姓名。或者您可以使用組或字典的HashSet來加速該部分。然後,爲你的Groups做個吸氣劑。

在回答你的問題:

  • 您只需要標記Group()構造爲DataMember,如果它需要調用客戶端
  • 是,標籤列表將需要標記爲DataMember的,我認爲,從您的代碼將所需的客戶端

您可能需要更具體一點,就是這個添加TagGroup客戶-S IDE?爲了更清楚地說明,你會在適當的地方使用GroupProxyTagProxy。在代碼中使用它們,它們是與WCF服務交談的那些代碼。然後,他們應該明白他們需要調用哪些成員/方法並標記合同/服務中的每一個成員/方法(您可能還想考慮將合同分離到一個接口,然後將實際實現保留在一個類中)成爲服務)實現該接口