Есть один и тот же вопрос, который я постоянно задаю себе каждый раз, когда запускается новое решение на основе Dependency Injection.У меня обычно есть специальная сборка для интерфейсов - на нее ссылаются все остальные модули решения.Если мне нужно использовать несколько небольших пользовательских типов данных, я также использую их для сохранения в сборке интерфейсов.Это кажется наиболее логичной вещью, однако всегда делает проект сборки интерфейса похожим на корзину.
И вопрос в том, в каком месте лучше хранить SearchParams
, SimpleTask
и ComplexTask
?Пожалуйста, обратитесь к примеру ниже.
Вот как я использую:
Common.Interfaces
interface IScheduler
{
Boolean ScheduleTask(ITask task);
ITask FindTask(SearchParameters search);
}
interface ITask { ... }
class SearchParameters { ... }
Common.Scheduler
class Scheduler : IScheduler { ... }
class SimpleTask : ITask { ... }
class ComplexTask : ITask { ... }
Проблема с SimpleTask
и ComplexTask
здесь заключается в том, что мне требуется ссылка на Common.Scheduler, где бы я ни вызывал IScheduler.ScheduleTask (...).И проблема с SearchParameters
в том, что он впустую тратит интерфейс.Представьте, что под одной сборкой хранятся сотни маленьких типов.