Я создал следующий интерфейс.
public interface IMineralService
{
Task<Mineral[]> GetMinerals(int page = 0, int size = Int32.MaxValue);
Task<Mineral> GetMineral(int id);
}
Его реализация заключается в следующем.
public class MineralService : IMineralService
{
public async Task<Mineral[]> GetMinerals(int page = 0, int size = Int32.MaxValue)
{
Mineral[] data = await Task.FromResult(Minerals);
return data.Skip(page * size).Take(size).ToArray();
}
public async Task<Mineral> GetMineral(int id)
{
Mineral[] data = await GetMinerals();
return data.SingleOrDefault(a => a.Id == id);
}
}
Я не понимаю, какова цель или значение объявления значений по умолчанию для параметров как в конструкторе, так и в реализации. Пропуск значений по умолчанию не вступает в противоречие с реализацией интерфейса как такового, поэтому будет работать следующее. То есть - на реализацию не накладывается набор значений по умолчанию из интерфейса.
public interface IMineralService
{
Task<Mineral[]> GetMinerals(int page = 0, int size = Int32.MaxValue);
}
public class MineralService : IMineralService
{
public async Task<Mineral[]> GetMinerals(int page, int size) { ... }
}
Он также работает с значениями по умолчанию, только объявленными в реализации.
public interface IMineralService
{
Task<Mineral[]> GetMinerals(int page, int size);
}
public class MineralService : IMineralService
{
public async Task<Mineral[]> GetMinerals(int page = 0, int size = Int32.MaxValue)
}
Однако, чтобы второй метод работал с await GetMinerals () , в реализации должны быть установлены значения по умолчанию. Так какой смысл когда-либо устанавливать значение по умолчанию в конструкторе, если оно должно быть переформулировано в реализации (если оно используется другим вызовом) или не нужно вообще (если нет другого вызова, использующего значения по умолчанию)?