Скажем, у меня есть следующий интерфейсОбщий интерфейс, реализующий несколько общих типов - как разделить реализацию метода?
public interface IFilter<T>
{
IEnumerable<T> ApplyFilter(IEnumerable<T> list);
}
и конкретной реализации, как это:
public class PetFilter: IFilter<Dog>, IFilter<Cat>
{
public IEnumerable<Dog> ApplyFilter(IEnumerable<Dog> list)
{
return ApplyFilter<Dog>(list);
}
public IEnumerable<Cat> ApplyFilter(IEnumerable<Cat> list)
{
return ApplyFilter<Cat>(list);
}
private IEnumerable<T> ApplyFilter<T>(IEnumerable<T> list)
{
// do the work here
}
}
Есть ли способ, чтобы избежать необходимости осуществлять отдельные методы как собаки и кошки, при условии, что они использовать одну и ту же реализацию?
Do Cat and Dog оба наследуют от общего основания, которое определяет все значения, которые вы хотите фильтровать? –
Не очень хорошая идея. Очень показательно, как вы сразу создали ошибку в этом фрагменте. –