Я не уверен, что мой вопрос понятен, поэтому я поясню его по коду:
В основном у меня есть интерфейс загрузчика, с типом generi c в качестве интерфейса. Здесь и Cat, и Dog реализуют IAnimal.
private readonly IAnimalLoader<Cat> _catLoader;
private readonly IAnimalLoader<Dog> _dogLoader;
private IAnimalLoader<IAnimal> animalLoader;
public AnimalService(IAnimalLoader<Cat> catLoader,
IAnimalLoader<Dog> dogLoader)
{
_catLoader = catLoader;
_dogLoader = dogLoader;
}
Проблема заключается в том, что при попытке назначить любой из загрузчиков в animalLoader:
if (animal == AnimalType.Cat)
{
animalLoader = _catLoader;
}
else
{
animalLoader = _dogLoader;
}
C# жалуется на нет неявных преобразование из Cat
в IAnimal
, даже если оно реализует его. Кажется, ни один актер не решит проблему.
Есть идеи, что я делаю неправильно?
РЕДАКТИРОВАТЬ: Вот IAnimalLoader для разъяснения
public interface IAnimalLoader<T> where T : IAnimal
{
IQueryable<T> GetAllQueryable();
Task<T> GetAsync(string id);
}