1

私は次のモック可能なリポジトリパターンを試しています。

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

ITableこれは、オブジェクトのを返すことができるコンテナを表しEmployeeます。リポジトリに基づいてモックオブジェクトを作成できるようにしたいだけでなく、Linq-to-SqlDataContextにリポジトリインターフェイスを実装させたいと考えています。DataContextしたがって、部分クラスを使用して、実装する型を宣言することができると思いました。これは、型IEmployeeRepositoryの自動生成されたメンバーがすでにあるためです。EmployeesTable<Employee>

public partial class MyDataContext : IEmployeeRepository { }

その結果、次のエラーメッセージが表示されます。

「MyDataContext」は、インターフェースメンバー「IEmployeeRepository.Employees」を実装していません。「MyDataContext.Employees」は、「System.Data.Linq.ITable」の一致する戻りタイプがないため、「IEmployeeRepository.Employees」を実装できません。

しかし、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 に答える