К какому уровню проекта относятся общие методы расширения? - PullRequest
6 голосов
/ 20 октября 2011

Мне любопытно, к какому «слою» принадлежат общие системные расширения, которые являются глобальными для приложения. Например, у меня могут быть расширения, позволяющие мне использовать Rails-подобные «DaysAgo», «MonthsAgo» и т. Д. тип метода расширения на целые числа. К какому уровню проекта это обычно относится? Я думал об Инфраструктуре, но, похоже, это связано с базой данных (например, базовые репозитории и доступ к данным). У меня есть проект библиотеки "Core", так что, может быть, он там находится?

Я понимаю, что вы хотите сгруппировать расширения, которые относятся к определенной группе классов, но они в основном используются во всем приложении. За несколько дней до методов расширения они были бы в Utilities статическом классе или тому подобном, так где же им теперь жить?

Ответы [ 4 ]

3 голосов
/ 20 октября 2011

Я бы поставил эти методы на минимально возможный уровень, где существуют эти объекты / сущности.

либо в интерфейсах, либо в объектах, либо в сборке ядра: чем ниже, тем лучше, чтобы все верхние уровни могли его использовать:)

2 голосов
/ 20 октября 2011

Я бы поместил их в базовый проект (что-то вроде «Core»), на который ссылаются все остальные проекты.Если вы начнете новый проект через какое-то время, вы сможете легко использовать эти методы расширения.

Я бы подумал о пространствах имен, которые вы будете использовать для различных наборов методов расширения.Если некоторые действительно принадлежат Data, просто поместите их в пространство имен Core.Data, чтобы ваш код в других проектах не был загроможден методами расширения, которые не имеют смысла в этом контексте.

2 голосов
/ 20 октября 2011

Вы можете (лучше) создать несколько инфраструктурных проектов на основе области, например:

Infrastructure.Common (здесь идет общая инфраструктура - лучше всего подходит для методов расширения) Infrastructure.Data (доступ к данным) Infrastrcuture.бла бла бла

0 голосов
/ 20 октября 2011

Рассмотрите возможность размещения логики, которая выходит за рамки всего приложения, в его собственную сборку или сборки.

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