【发布时间】:2011-04-07 07:50:48
【问题描述】:
在this 帖子中,我谈到了使用通用基类使我能够创建存储库类而无需重复加载基本管道代码。
每个存储库都通过一个接口访问。在下面的代码中,为简洁起见,我将只展示其中一种方法:
界面:
IQueryable<Suggestion> All { get; }
通用基类
public IQueryable<T> All
{
get { return _unitOfWork.GetList<T>(); }
}
具体类(实现接口并扩展通用基类)
public IQueryable<Suggestion> All
{
get { return _unitOfWork.GetList<Suggestion>(); }
}
我预计我将能够简单地将方法从具体类中剥离出来,编译器将使用通用基类实现来代替并计算出旨在满足接口的方法。但是没有!
当我剥离方法时,我得到旧的“不实现接口成员”错误。
如果我不能做到这一点,我使用泛型基类的努力不是没有意义吗?或者有没有办法解决这个问题?
【问题讨论】:
-
请添加类声明。
-
您的具体类定义是什么样的? T 是从哪里来的?
-
具体类的声明看起来如何?您应该包括在内,因为这可能是问题所在。如果它是 Concrete:Base
、IYourInterface,那么它应该可以工作。 -
AAArrrgh!这完全是我的错。我没有指定具体类扩展基类。当您在新领域工作时,您可能会错过愚蠢的错误。我会删除这个帖子...
-
现在无法删除。我的愚蠢被永久公开展示。 :(
标签: c# generics inheritance repository-pattern