Предоставление свойств классам с помощью интерфейса - PullRequest
2 голосов
/ 20 июня 2011

Если бы у вас были классы, такие как Page, News и т. Д., Которые описывают элементы содержимого, и вы хотели реализовать возможность добавлять вложения (файлы или другие типы элементов) к этим классам, вы бы создали, например,

public List<Attachment> Attachments { get; set; }

в каждом из этих файлов, или вы бы преобразовали это в интерфейс с именем IAttachmentContainer, который имеет только это свойство

List<Attachment> Attachments { get; set; }

, а затем используете этот интерфейс со всеми этими классами (заставьте классы реализоватьинтерфейс)?

Как вы заметили, поскольку мы использовали универсальную коллекцию (список), нашему интерфейсу не нужны были какие-либо дополнительные методы, или я его пропустил?

Я мог бы получитьМногие из этих коллекций (помимо вложений также могут быть виджеты и т. д.), и я хочу, чтобы решение было как можно более чистым.Пока этот интерфейсный путь является лучшим из найденных, единственное, что меня беспокоит, это то, что эти интерфейсы в основном без методов .

По сути, я бы в итоге получил

public class News : IAttachmentContainer, IWidgetContainer, ...

Кажется ли это нормально?

1 Ответ

2 голосов
/ 20 июня 2011

Это нормально, если вы собираетесь использовать такие функции, как ...

ProcessAttachments(IAttachmentContainer MyObject)...

Тогда вы можете передать ему любой объект, который реализовал интерфейс вложения ...

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