Типы возвращаемых интерфейсов C #

#c# #interface

#c# #интерфейс

Вопрос:

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

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

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

Комментарии:

1. Вопрос довольно расплывчатый, но, насколько я понимаю, таков: как насчет словаря? например, словарь<IOrganisation, Список<IPeople>> .

Ответ №1:

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

Что-то вроде этого:

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

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

Комментарии:

1. Спасибо, только то, что мне нужно было знать.

Ответ №2:

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

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

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

Комментарии:

1. @hcb Тогда, вероятно, он будет называться IOrganizationList или IOrganizationCollection, а не IOrganizations.

Ответ №3:

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

 IEnumerable<IPerson> GetPeople()
  

Ответ №4:

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

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

Ответ №5:

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

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