不确定这是否是一个愚蠢的问题,但我刚刚注意到这一点:
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);
}
这仅仅是编译器对 C# 语义的过度保护吗?除了使代码更具可读性之外,接口方法中的参数名称还有什么用途?在我看来,如果参数名称不是强制执行的,它会引起歧义。