c#接口返回类型

本文关键字:返回类型 接口 | 更新日期: 2023-09-27 18:10:39

我有几个接口,iorganizations和IPeople。

如果我想返回与组织关联的人员列表,我应该在哪个接口中创建它?

结果是基于组织,但我返回的是人员列表

c#接口返回类型

IOrganisation上执行此操作(并将IPeople作为返回类型)。

像这样:

interface IOrganisation {
    IList<IPeople> GetPeople();
}

这是因为一个组织的人是组织的财产,而不是人的财产。

这听起来应该是在IOrganization -这是你要叫它,毕竟。您拥有的是组织,您想要人员列表-您不能从人员列表开始,因此必须IOrganization接口的一部分。

我发现以复数接口名称开头很奇怪-我希望IOrganization用于单个组织,IPerson用于单个人。

public interface IOrganization {
    IList<IPerson> GetPeople();
}

首先,您可能不应该使用复数形式的接口名称。将它们命名为IOrganization和IPerson然后在IOrganisation界面上你可能会有一个方法叫做

IEnumerable<IPerson> GetPeople()

哪个属于哪个?

在我看来,iOrganisation.People将是一个人的列表(你的"IPeople"界面是代表一个人的列表还是一个人?)属于组织。同样,你可能有一个IPeople.Organisations,列出了一个人所属的所有组织。两者可能有不同的底层机制——可能调用相同的查询表——这对调用代码的人来说无关紧要。

如果您认为组织是包含人员的集合,那么将其放在IOrganization中是很直观的。它看起来像这样:

interface IOrganization
{
  IList<IPeople> Members { get; }
}