我正在尝试理解this
中描述的通用接口我的示例有一个界面:
public interface ITest<T> where T: class
{
T GetByID(int id);
}
我有一个实现接口的类,使用LINQ来引入项目Data,其中包含类myClass:
public class Test<myClass> : ITest<myClass> where myClass : class
{
Data.myEntities _db = new Data.myEntities();
public myClass GetByID(int id)
{
var item = _db.myClass.First(m => m.ID == id);
return item;
}
}
这会产生一个错误,说“不能将类型'Data.myClass'隐式转换为'myClass',但是如果我将公共类Test&lt; myClass&gt;更改为公共类Test&lt; Data.myClass&gt;我得到”类型参数声明必须是一个标识符而不是类型“。
我显然错过了一些东西,因为我不明白这里发生了什么。任何人都可以解释它,或指向可以更好地解释它的地方吗?
感谢。
答案 0 :(得分:2)
我认为您只想从Test类中删除泛型参数。
... class Test : ITest<myClass> ...
现在,通用参数名称是实际的类型名称。
答案 1 :(得分:0)
我怀疑问题在这里:
_db.myClass.First...
你的意思是否可能是
_db.GetAll<myClass>().First...
我认为你将myClass作为一个类型与myClass混淆为函数_db实现了吗?