Как класс C# может наследовать базовый класс и интерфейс и разрешать интерфейсы обоих классов с помощью IOC?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как класс C# может наследовать базовый класс и интерфейс и разрешать интерфейсы обоих классов с помощью IOC?

Сообщение Anonymous »

Это все быстро набранный псевдокод, иллюстрирующий проблему. У меня есть базовый класс, реализующий интерфейс. Затем я наследую этот класс в двух дочерних классах, которые реализуют свои собственные интерфейсы. Наконец, я внедряю один из дочерних классов в контроллер.
Я надеялся, что смогу также вызвать методы Delete и GetSearches базового класса. как метод GetCustomerSearchResults дочернего класса. Но это не компилируется. Таким образом, очевидно, что интерфейс базового класса не может быть найден, хотя дочерний класс наследует от класса, реализующего этот интерфейс.
Как еще я могу это сделать, чтобы сохранить более общий поиск, сохраните , удалить методы в базовом классе, имея более конкретные методы типа сущности в дочернем классе, и иметь оба метода интерфейса, доступные в контроллере? Есть ли определенный шаблон проектирования, который хорошо подходит для этого?
public interface ISearchService{
Task GetSearches(int userId);
Task DeleteSearch(int id);
}

public class SearchService : ISearchService {
private IRepository _repository;

public SearchService(IRepository repository){
_repository = repository;
}

public async Task GetSearches(int userId){
return await _repository.GetUserSearches(userId);
}

public async Task DeleteSearch(int id){
await _repository.DeleteSearch(id);
}
}

public interface ISalesSearchService{
Task GetSalesSearchResults(Search search);
}

public class SalesSearchService : SearchService, ISalesSearchService{

public ISalesSearchRepository _salesRepository;
public SalesSearchService(IRepository repository, ISalesSearchRepository salesRepository) : base(repository){
_salesRepository = salesRepository;
}

public async Task GetSalesSearchResults(Search search){
return _salesRepository.GetSalesSearchResults(search);
}
}

public interface ICustomerSearchService{
Task GetCustomerSearchResults(Search search);
}

public class CustomerSearchService : SearchService, ISalesSearchService{

public ICustomerSearchRepository _customerRepository;
public SalesSearchService(IRepository repository, ICustomerSearchRepository customerRepository) : base(repository){
_customerRepository = customerRepository;
}

public async Task GetCustomerSearchResults(Search search){
return _customerRepository.GetCustomerSearchResults(search);
}
}

public class CustomerSearchController : Controller {

private ICustomerSearchService _customerSearchService;

public CustomerSearchController(ICustomerSearchService customerSearchService){
_customerSearchService = customerSearchService;
}

public async Task Delete(int id){
await _customerSearchService.Delete(1);
}

public async Task GetSearchResults(int id){
var searches = await _customerSearchService.GetSearches(_userId);
var search = searches.FirstOrDefault(x => x.Id == id);

var results = await _customerSearchService.GetCustomerSearchResults(search);
return View(results);
}
}


Подробнее здесь: https://stackoverflow.com/questions/791 ... -have-both
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Могу ли я позвонить в Asio :: co_spawn (ioc, ...) после вызова ioc.run ()
    Anonymous » » в форуме C++
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Могу ли я позвонить в Asio :: Co_spawn (IOC, ...) в отдельном потоке после блокировки вызова в ioc.run ()
    Anonymous » » в форуме C++
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Интерфейсы аннотируются аннотацией @Component в Spring IoC/DI. Что может быть причиной?
    Anonymous » » в форуме JAVA
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Как я могу не разрешать буквы и разрешать ввод только цифр на Python 3?
    Anonymous » » в форуме Python
    0 Ответы
    25 Просмотры
    Последнее сообщение Anonymous
  • Наследовать сразу или наследовать по одному
    Anonymous » » в форуме C++
    0 Ответы
    25 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»