不确定这是一个愚蠢的问题,但我刚刚注意到了这个:
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”,但是在接口中,它被定义为“count”。编译器仍然认为接口已经实现了,这很好,但可能会导致一些歧义。显然,我应该重命名其中一个参数以匹配另一个。
在进行重命名之前,我稍微尝试了一下,并注意到了一些有趣的东西。我不允许声明我的接口为:
public interface IActivityDao : IDao<Activity>
{
IList<Activity> GetAllSinceSequence(long, int);
}
这只是编译器在保护C#语义方面过于谨慎吗?除了使代码更易读之外,接口方法中的参数名称有什么作用?如果不强制实现,我觉得这会导致歧义。