Не уверен, что это глупый вопрос, но я просто заметил это:
public interface IActivityDao : IDao<Activity>
{
IList<Activity> GetAllSinceSequence(long sequence, int count);
}
public class ActivityDao : AbstractNHibernateDao<Core.Domain.Activity>, IActivityDao
{
public IList<Activity> GetAllSinceSequence(long sequence, int maxRecords)
{
}
}
Внутри моей реализации я назвал свой второй параметр "maxRecords". Тем не менее, в интерфейсе он определяется как "счет". Компилятор по-прежнему рассматривает реализованный интерфейс, что хорошо, но может привести к некоторой двусмысленности. Ясно, что я должен переименовать один из параметров в соответствие с другим.
Я немного поиграл, прежде чем переименовать и заметил что-то интересное. Мне не разрешено объявлять мой интерфейс как:
public interface IActivityDao : IDao<Activity>
{
IList<Activity> GetAllSinceSequence(long, int);
}
Это просто компилятор, который слишком защищен от С# symantics? Какую цель используют имена параметров в методе интерфейса, кроме как сделать код более читаемым? Мне кажется, что он вызывает неоднозначность, если имена параметров не принудительно применяются при реализации.