收到以下错误:
错误1方法的类型参数“
T
”的约束 “genericstuff.Models.MyClass.GetCount<T>(string)
”必须与类型
的约束相匹配 接口方法“T
”的参数“genericstuff.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);
}
答案 0 :(得分:23)
您正在将T generic参数限制为实现中的class。您的界面没有此约束。
您需要将其从类中删除或将其添加到您的界面以使代码编译:
由于您正在调用方法CreateObjectSet<T>()
,requires the class constraint,您需要将其添加到您的界面。
public interface IMyClass
{
int GetCount<T>(string filter) where T : class;
}
答案 1 :(得分:3)
您还需要将约束应用于接口方法,或者将其从实现中删除。
您正在通过更改实施约束来更改接口合同 - 这是不允许的。
public interface IMyClass
{
int GetCount<T>(string filter) where T : class;
}
答案 2 :(得分:1)
您也需要约束您的界面。
public interface IMyClass
{
int GetCount<T>(string filter) where T : class;
}