我知道我的问题标题一点都不好,所以如果有人找到合适的标题,请更改。
如果我有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对象。
答案 0 :(得分: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();
}