2012-04-06 5 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'プロパティを含めるには、** yes **を送信する必要があります。それには、[[ DataMember]属性でクラスをデコレートすると、** [DataMember] **でマークされたものだけがWCFメッセージにシリアル化されます。 –

+0

どのようにgroup.GroupName( tag.Add)はタグを追加できます。o_O – wonde

答えて

2

私はコードで混乱少しだけだ:group.GroupName(tag.Add)。あなたのグループのグループ名をリセットしようとしていますか?そしてtag.Addメソッドは何をしますか?代わりに

group.Add(tag) 

:私はあなたがこのように、あなたの現在のList<Tag> Tagsリストにタグを追加するには、グループ内のAddメソッドを好むかもしれないと思っただろう。それとも、あなたはあなたが得られますので、ちょうど、GroupNameの中に渡し、それのための検索を行うことを好むかもしれないあなたのGroupsリストの最初の右のグループを見つける必要がある場合:FindGroupByName

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

を、あなたは行き​​ますよGroupsのリストを参照し、それぞれの名前を提供されているものと照合してください。または、その部分を高速化するために、グループまたは辞書のHashSetを使用することもできます。次に、Groupsのゲッターを作成してください。ご質問への回答で

  • あなただけでは、クライアント側
  • 呼び出す必要がある場合は、[はい、タグのリストをする必要がありますDataMemberとしてGroup()コンストラクタをマークする必要があります。私が思うに、とDataMemberとしてマークされ、あなたのコードから、それはあなたが、もう少し具体的にする必要がある場合があります、クライアント側

を必要とされるであろう、このGroupクライアント-SへTag追加されますイデア?それをもっと明確にするには、適切な場合はGroupProxyTagProxyを使用します。これらはコード内で使用し、WCFサービスと通信するものです。次に、どのメンバー/メソッドを呼び出す必要があるのか​​を明らかにし、契約/サービスの各メンバーをマークします(契約をインターフェースに分けて、実際の実装をクラスに保持することも考えられます。