14

收到以下错误:

错误 1T​​方法
genericstuff.Models.MyClass.GetCount<T>(string)”的类型参数“ ”的约束必须与接口方法“ ”的类型
参数“ ”的约束匹配。考虑 改用显式接口实现。Tgenericstuff.IMyClass.GetCount<T>(string)

班级:

 public class MyClass : IMyClass
 {
     public int GetCount<T>(string filter)
     where T : class
       {
        NorthwindEntities db = new NorthwindEntities();
        return db.CreateObjectSet<T>().Where(filter).Count();
       }
 }

界面:

public interface IMyClass
{
    int GetCount<T>(string filter);
}
4

3 回答 3

36

您将 T 泛型参数限制为实现中的类。您的界面没有此限制。

您需要将其从您的类中删除或将其添加到您的界面以让代码编译:

由于您正在调用需要类约束CreateObjectSet<T>()的方法,因此您需要将其添加到您的界面中。

public interface IMyClass
{
    int GetCount<T>(string filter) where T : class;
}
于 2012-08-07T12:29:01.217 回答
3

您要么需要将约束也应用到接口方法,要么将其从实现中删除。

您正在通过更改实现的约束来更改接口合同 - 这是不允许的。

public interface IMyClass
{
    int GetCount<T>(string filter) where T : class;
}
于 2012-08-07T12:29:15.523 回答
2

你也需要约束你的界面。

public interface IMyClass
{
    int GetCount<T>(string filter) where T : class;
}
于 2012-08-07T12:30:42.277 回答