已经定义了名为X的c#模型成员
本文关键字:模型 成员 定义 | 更新日期: 2023-09-27 18:10:48
有一个类Books,它应该实现两个外表。评论和评级。这是类:
public class Books
{
public Books()
{
CommentsList = new List<Comments>();
}
public Books()
{
RatingList = new List<Rating>();
}
public virtual int Id { get; set; }
public virtual string Title { get; set; }
public virtual string Category { get; set; }
public virtual string ISBN { get; set; }
public virtual string Description { get; set; }
public virtual string Image { get; set; }
// public virtual int CategoryId { get; set; }
public virtual Categories Categories { get; set; }
public virtual IList<Comments> CommentsList { get; set; }
public virtual IList<Rating> RatingList { get; set; }
public virtual void AddComment(Comments comm)
{
comm.Books = this;
CommentsList.Add(comm);
}
public virtual void AddRating(Rating rating)
{
rating.Books = this;
RatingList.Add(rating);
}
}
给出错误
错误2已经定义了一个名为'Books'的成员参数类型
如何解决这个问题,有可能添加评论和评级的书?
您有两个相同的构造函数。我猜你正在使用实体框架,如果我没记错的话,你想把那些IList
s改为ICollection
s,以使用实体框架的延迟加载功能。
public class Books
{
public Books()
{
CommentsList = new List<Comments>();
}
public Books()
{
RatingList = new List<Rating>();
}
}
:
public class Books
{
public Books()
{
CommentsList = new List<Comments>();
RatingList = new List<Rating>();
}
}
不能有两个具有相同签名的构造函数。您应该考虑使用构建器模式。
您通常会隐藏构造函数(使它们私有),而不是公开静态方法,如CreateFromComments
和CreateFromRatings
。
private Books() { }
public static Books CreateFromComments()
{
var ret = new Books();
ret.CommentsList = new List<Comments>();
return ret;
}
public static Books CreateFromRatings()
{
var ret = new Books();
ret.RatingsList = new List<Ratings>();
return ret;
}
可以通过布尔参数设置列表初始化…
public Books(bool comments)
{
if (comments)
CommentsList = new List<Comments>();
else
RatingList = new List<Rating>();
}