0

我知道我的问题标题一点都不好,所以如果有人找到合适的,请更改。

如果我有 Book 和 Tag 对象。一本书有很多标签。标签有书。如果我像这样创建书籍对象

Book apressMVC4 = new Book()
{
  Id = 1,
  Name = "Apress Pro asp.net mvc4",
  tags = new List<Tag>{
     new Tag{Id = 1, Name = "mvc", Book = ??? how to add this current book apressMVC4},
}};

显然,我不能使用 apressMVC4 变量来存储 Tag 对象的 Book 属性,所以如何在这个例子中创建 book 对象。

4

1 回答 1

2

这样做的唯一方法是分两步分解语句:

Book apressMVC4 = new Book();

apressMVC4.Id = 1;
apressMVC4.Name = "Apress Pro asp.net mvc4";
apressMVC4.tags = new List<Tag>
{
    new Tag { Id = 1, Name = "mvc", Book = apressMVC4 }
};

显然,这不再是单个表达式,如果您尝试初始化字段或在 linq 表达式中使用它,这可能会很烦人。但是您始终可以将此逻辑封装在带有一些参数的 Book 构造函数中:

public Book(int id, string name, params Tag[] tags)
{
    this.Id = id;
    this.Name = name;
    this.tags = tags
        .Select(tag => new Tag { Id = tag.id, Name = tag.Name, Book = this })
        .ToList();
}
于 2013-10-15T08:02:13.497 回答