当前位置:  开发笔记 > 编程语言 > 正文

扩展方法不适用于接口

如何解决《扩展方法不适用于接口》经验,为你挑选了1个好方法。

受MVC店面的启发,我正在研究的最新项目是使用IQueryable上的扩展方法来过滤结果.

我有这个界面;

IPrimaryKey
{
  int ID { get; }
}

我有这种扩展方法

public static IPrimaryKey GetByID(this IQueryable source, int id)
{
    return source(obj => obj.ID == id);
}

假设我有一个实现IPrimaryKey的类SimpleObj.当我有一个SimpleObj的IQueryable时,GetByID方法不存在,除非我明确地转换为IPrimaryKey的IQueryable,这不太理想.

我在这里错过了什么吗?



1> Konrad Rudol..:

如果做得好,它可以工作.cfeduke的解决方案有效.但是,您不必使IPrimaryKey接口通用,事实上,您根本不必更改原始定义:

public static IPrimaryKey GetByID(this IQueryable source, int id) where T : IPrimaryKey
{
    return source(obj => obj.ID == id);
}

推荐阅读
吻过彩虹的脸_378
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有