"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)
我在编译代码时遇到此错误,但无法找出确切原因:
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)