Где хранить второстепенные пользовательские типы данных при реализации DI / IoC - PullRequest
0 голосов
/ 31 мая 2011

Есть один и тот же вопрос, который я постоянно задаю себе каждый раз, когда запускается новое решение на основе 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 в том, что он впустую тратит интерфейс.Представьте, что под одной сборкой хранятся сотни маленьких типов.

1 Ответ

0 голосов
/ 31 мая 2011

Зачем вам нужно ссылаться на Common.Scheduler, когда вы звоните IScheduler.ScheduleTask?Этот метод правильно использует интерфейс, поэтому для вызова этого метода не требуется указывать Common.Scheduler.
Ссылку на эту сборку нужно указывать только в том случае, если вы работаете с одним из конкретных типов SimpleTask или ComplexTask.В этом случае правильно, что вам нужно сослаться на эту сборку.

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