"Class does not implement interface member" class 实现通用接口时出错

"Class does not implement interface member" error on class implementing a generic interface

我在编译代码时遇到此错误,但无法找出确切原因:

Class does not implement interface member

这是我的代码:

interface IReview<T> where T : Review
{
    IEnumerable<T> Reviews { get; set; }

    void AddReview<T>(T item);  
}

class ReviewCollection : IReview<Review>
{
    IEnumerable<Review> _reviews;

    public IEnumerable<Review> Reviews
    {
        get { return _reviews; }
        set { _reviews = value; }
    }

    public void AddReview(Review item)
    {

    }
}

它有什么问题?

你在界面中对AddReview的定义是错误的。它应该是:

void AddReview(T item);  

泛型类型参数 T 已由 class 提供,您不想偏离您的方法(在本例中)。您现在将 T 的含义更改为局部类型参数,而不是使用 class 级别上可用的参数。

您没有实现泛型方法:

public void AddReview<Review>(Review item)
{    
}

或者您应该更改接口中方法的签名:

void AddReview(T item);

您可能需要更改此方法:

public void AddReview(Review item)

为此:

public void AddReview<Review>(Review item)