0
我已经创建这个通用方法类型“”不能被用作类型参数“在通用类型或方法T”
public IEnumerable<T> GetByID<T>(IEnumerable<T> source, int id) where T : IFields
{
return source.Where(x => x.id == id);
}
其中IFieds
接口是
public interface IFields
{
string code { get; set; }
int id { get; set; }
}
当我尝试得到的值,这显然不会编译
DB.GetByID(Helper.Database.Table<Items>(), 1);
与以下编译错误。
类型“项目”不能在通用 类型或方法 “DB.GetByID(System.Collections.Generic.IEnumerable,INT)”被用作类型参数“T”。有 是没有从“项目”到“IFields”的隐含参考转换
我该如何解决这个问题? 其实,我希望使用lambda表达式“以匿名类型”。
'Items'是否实现'IFields'? –
@ LasseV.Karlsen其实没有先生 – OrElse
那么你预计会发生什么?你特别说'T'必须实现那个接口,然后你尝试传入一个没有的类型。我可以发布一个简单的答案,告诉你为什么你会得到这个错误消息,但我怀疑这不会帮你。请告诉我们更多关于你为什么添加了约束的问题,以及为什么/当你传入一个没有实现它的类型时会发生什么,或许我们可以帮助你做正确的事情,而不仅仅是说“这就是为什么赢了”工作“。 –