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

时间:2015-09-02 14:13:15

标签: c#

拥有类书籍,我应该实现两个外表。评论和评级。这是班级:

£ 5.00

它出错

  

错误2已经定义了一个名为“Books”的成员   参数类型

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

3 个答案:

答案 0 :(得分:4)

你有两次相同的构造函数。我猜您正在使用实体框架,如果我没记错,您希望将这些IList更改为ICollection以使用实体框架延迟加载功能。

更改

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

答案 1 :(得分:2)

您根本无法拥有两个具有相同签名的构造函数。您应该考虑使用a builder pattern代替。

您通常会隐藏构造函数(将它们设为私有),而是公开静态方法,如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;
}

答案 2 :(得分:0)

可能是你可以传递一个布尔参数来设置列表来初始化...

    public Books(bool comments)
    {
        if (comments)
            CommentsList = new List<Comments>();
        else
            RatingList = new List<Rating>();
    }