1

我正在试验以下可模拟的存储库模式:

public interface IEmployeeRepository
{
    ITable<Employee> Employees { get; }
}

这表示一个能够返回一个对象ITable的容器。Employee我希望能够基于存储库创建一个模拟对象,并让我的 Linq-to-SqlDataContext实现存储库接口。所以我想我可以只使用部分类来声明我的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>,那么它不应该是一个合适的返回类型来实现接口吗?

4

1 回答 1

2

实现类的类型必须与接口类型完全匹配。如果你不能改变接口,你可以显式地实现它:

class EmployeeRepository : IEmployeeRepository
{
    // existing property
    public Table<Employee> Employees { get; }

    // explicit IEmployeeRepository property
    ITable<Employee> IEmployeeRepository.Employees { get { return Employees; } }
}
于 2012-04-09T18:03:57.007 回答