我正在试验以下可模拟的存储库模式:
public interface IEmployeeRepository
{
ITable<Employee> Employees { get; }
}这表示能够返回ITable of Employee对象的容器。我希望能够基于存储库创建一个模拟对象,并让我的Linq到Sql DataContext实现存储库接口。因此,我想我可以只使用分部类来声明我的DataContext类型来实现IEmployeeRepository,因为它已经有一个自动生成的Employees类型为Table<Employee>。
public partial class MyDataContext : IEmployeeRepository { }因此,我得到以下错误消息:
'MyDataContext‘不实现接口成员'IEmployeeRepository.Employees’。'MyDataContext.Employees‘不能实现'IEmployeeRepository.Employees’,因为它没有匹配的返回类型'System.Data.Linq.ITable‘。
但是Table<Employee>继承了ITable<Employee>,所以它不应该是实现接口的合适的返回类型吗?
发布于 2012-04-09 18:03:57
实现类的类型必须与接口类型完全匹配。如果无法更改接口,则可以显式地实现它:
class EmployeeRepository : IEmployeeRepository
{
// existing property
public Table<Employee> Employees { get; }
// explicit IEmployeeRepository property
ITable<Employee> IEmployeeRepository.Employees { get { return Employees; } }
}https://stackoverflow.com/questions/10077516
复制相似问题