#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; }
}