Типы возврата интерфейса C # - PullRequest
3 голосов
/ 06 октября 2011

У меня есть пара интерфейсов, IOrganisations и IPeople.

Если я хочу вернуть список людей, связанных с организацией, в каком интерфейсе я это создаю?

Результаты основаны на организации , но я возвращаю список людей

Ответы [ 5 ]

6 голосов
/ 06 октября 2011

Звучит так, как будто должно быть на IOrganization - в конце концов, так и будет.То, что у вас есть - это организация, вы хотите список людей - вы не можете начинать со списка людей, поэтому должны быть частью интерфейса IOrganization.

Мне кажется странным иметь множественное число имен интерфейсов для начала - я бы ожидал IOrganization для одной организации и IPerson для одного человека.

public interface IOrganization {
    IList<IPerson> GetPeople();
}
6 голосов
/ 06 октября 2011

Сделайте это на IOrganisation (и укажите IPeople в качестве типа возврата).

Примерно так:

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

Это потому, что люди организации являются собственностью организации, а не людей.

1 голос
/ 06 октября 2011

Прежде всего, у вас, вероятно, не должно быть множественных имен интерфейсов. Поэтому назовите их IOrganization и IPerson, а затем на вашем IOrganisation интерфейсе у вас может быть метод с именем:

IEnumerable<IPerson> GetPeople()
0 голосов
/ 06 октября 2011

Если вы думаете об организации как о коллекции, содержащей людей, то интуитивно понятно вставить это в IOrganization. Это будет выглядеть так:

interface IOrganization
{
  IList<IPeople> Members { get; }
}
0 голосов
/ 06 октября 2011

Что принадлежит кому?

Мне кажется, что iOrganisation.People будет списком людей (ваш интерфейс "IPeople" представляет список людей или одного человека?), Принадлежащих организации. Точно так же у вас может быть IPeople.Organisations, в котором перечислены все организации, к которым принадлежит человек. Возможно, оба будут иметь разные базовые механизмы - возможно, вызов одной и той же таблицы поиска - для человека, вызывающего код, это не имеет значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...