我尝试使用以下可模拟的存储库模式:
public interface IEmployeeRepository
{
ITable<Employee> Employees { get; }
}
这表示一个能够返回ITable
个Employee
个对象的容器。我希望能够基于存储库创建一个模拟对象,并让我的Linq-to-Sql DataContext
实现存储库接口。所以我想我可以使用partial class来声明我的DataContext
类型来实现IEmployeeRepository
,因为它已经有一个类型为Employees
的自动生成的成员Table<Employee>
:
public partial class MyDataContext : IEmployeeRepository { }
我收到以下错误消息:
&#39; MyDataContext&#39;没有实现接口成员 &#39; IEmployeeRepository.Employees&#39 ;. &#39; MyDataContext.Employees&#39;不能 实施&#39; IEmployeeRepository.Employees&#39;因为它没有 匹配&#39; System.Data.Linq.ITable&#39;。
的返回类型
但是Table<Employee>
继承了ITable<Employee>
,所以它不应该是一个合适的返回类型来实现接口吗?
答案 0 :(得分:2)
实现类的类型必须与接口类型完全匹配。如果您无法更改界面,则可以明确实现:
class EmployeeRepository : IEmployeeRepository
{
// existing property
public Table<Employee> Employees { get; }
// explicit IEmployeeRepository property
ITable<Employee> IEmployeeRepository.Employees { get { return Employees; } }
}