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 メソッドは何をするのでしょうか? List<Tag> Tags次のように、現在のリストにタグを追加するために、グループ内の Add メソッドを使用したいと思うかもしれません。

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 または Dictionary を使用して、その部分を高速化することもできます。次に、 のゲッターを作成しますGroups

ご質問への回答:

  • コンストラクターをクライアント側で呼び出す必要がGroup()ある場合にのみ、コンストラクターを としてマークする必要があります。DataMember
  • はい、タグのリストはDataMember、コードからクライアント側で必要になると思いますので、マークする必要があります

もう少し具体的にする必要があるかもしれませんが、これはクライアント側に追加しTagていますか? Groupそれをより明確にするために、必要に応じて and を使用GroupProxyTagProxyます。コードでこれらを使用すると、WCF サービスと通信するものになります。次に、どのメンバー/メソッドを呼び出して、コントラクト/サービス内の各メンバーをマークする必要があるかを明確にする必要があります (コントラクトをインターフェイスに分離し、実際の実装をクラスに保持することも検討してください (これにより、そのインターフェースを実装する Service になります)。

于 2012-04-06T21:50:49.990 に答える