Просто хотел знать, иду ли я в правильном направлении или нет.
Я реализую шаблон запроса-ответа (Request-Response), в котором каждая операция отправляет объект запроса и возвращает объект ответа.
Например:
Public FetchCustomerResponse Fetch(FetchCustomerRequest searchObject)
Я в некотором замешательстве по поводу реализации моего репозитория. У меня есть общий интерфейс хранилища, как это:
public interface IRepositoryReadOnly<TGetRequest, TGetResponse> : IDisposable
{
TGetResponse FetchAll();
TGetResponse Fetch(TGetRequest reqObject);
}
public interface IRepositoryReadWrite<TGetRequest, TGetResponse, TPutRequest, TPutResponse> : IRepositoryReadOnly<TGetRequest, TGetResponse>
{
TPutResponse Insert(TPutRequest dto);
TPutResponse Update(TPutRequest dto);
void Delete(long id);
}
У меня проблема в void Delete(long id);
.
Я хочу, чтобы мой метод удаления принимал объект, который содержит другие поля, такие как UserName, TimeStamp
и т. Д.
Должен ли я создать объект DeleteRequestObject со свойствами и добавить его в IRepositoryReadWrite
?
Вот как это будет выглядеть, если я это сделаю.
public interface IRepositoryReadWrite<TGetRequest, TGetResponse, TPutRequest, TPutResponse, TDeleteRequest, TDeleteResponse> : IRepositoryReadOnly<TGetRequest, TGetResponse>
{
TPutResponse Insert(TPutRequest dto);
TPutResponse Update(TPutRequest dto);
TDeleteResponse Delete(long TDeleteRequest);
}
Поскольку объекты DeleteRequest и DeleteReponse будут одинаковыми для всех операций (я так думаю), это будет хорошей реализацией или я совершенно не в курсе и делаю все неправильно?