Мы новичок в Glass Mapper и хотели использовать его в нашем проекте Sitecore. Когда мы смотрели на уроки, мы заметили, что не было никаких глубоких примеров того, как настроить глубокое наследование, которое позволяет Sitecore. При просмотре веб-страниц мы заметили, что есть люди, которые работают с размещением атрибутов на интерфейсах, а с другой стороны - люди помещают атрибуты в конкретные классы. Ни один из этих примеров не объясняет их веские причины для этого, однако оставляя нам вопрос: , который является правильным использованием и каково влияние того или иного?Sitecore Glass Mapper: Атрибуты на интерфейсах или конкретные классы?
Рассмотрим следующий пример:
Шаблон: Материалы (который является шаблон раздела поле добавления 2 простых полей: заголовок, тело) Этот шаблон прямо или косвенно унаследованы многие из наших шаблонов.
Теперь в одном из наших подслоев мы используем только этот раздел, и это своего рода более общий контроль, поэтому нам нужно сделать: GetCurrentItem<Content>
или GetCurrentItem<IContent>
.
Лично я считаю, что GetCurrentItem<IContent>
более интуитивно понятен, так как он чувствует, что спрашивает: «Дайте мне текущий элемент, если он поддерживает раздел содержания», где другой больше напоминает «Дайте мне текущий элемент, если он является секцией контента» (что технически невозможно, поскольку элементы контента никогда не создаются)
Спасибо, это было объяснение, которое я искал. Я надеюсь, что функциональность типа infer будет лучше документирована в будущем. – IvanL
Вы можете добавить дополнительную логику к интерфейсам с помощью методов расширения. Разумеется, это не идеально. – Iucounu
Первая ссылка не работает, вы знаете, есть ли у нее новая ссылка? –