已经定义了名为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'的成员参数类型

如何解决这个问题,有可能添加评论和评级的书?

已经定义了名为X的c#模型成员

您有两个相同的构造函数。我猜你正在使用实体框架,如果我没记错的话,你想把那些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>();
    }
}

不能有两个具有相同签名的构造函数。您应该考虑使用构建器模式。

您通常会隐藏构造函数(使它们私有),而不是公开静态方法,如CreateFromCommentsCreateFromRatings

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>();
    }