次の 2 つのジェネリック インターフェイスの両方を実装する基本クラスを作成する方法はありますか? この基本クラスは、2 つのインターフェイスのいずれかからメソッドを呼び出すことができる「他の」クラスに継承されます。
public interface IGenericRepositoryOne<E> where E : Entity
{
void Save(E entity);
void Save(List<E> entityList);
E Load(Guid entityId);
}
public interface IGenericRepositoryTwo<D, E> where E : Entity
{
void Save(D dto);
void Save(List<D> entityList);
D Load(Guid entityId);
}
現在、各インターフェースを個別に実装する 2 つの個別のリポジトリがあります。
public abstract class RepositoryOne<D, E> : IGenericRepositoryOne<D, E> where E : Entity {...}
public abstract class RepositoryTWO<E> : IGenericRepositoryTwo<E> where E : Entity {...}
そして、 または のいずれRepositoryOne
かを継承する必要があるクラスがありますRepositoryTwo
。私が因数分解をしようとしているのは、これらのクラスです。たとえば、次のようになります。
public class MessageDataTypeRepository : RepositoryTwo<MyEntityType>
{
// here when I call the method Load() I want it for RepositoryOne implementation.
}
public class MessageDataTypeRepository : RepositoryOne<MyDTOType, MyEntityType>
{
// here when I call the method Load() I want it for the RepositoryTwo implementation.
}