Следует ли мне использовать объекты, переданные в конструктор во время инъекции?

, я понимаю, что один из (возможно, лучший) способов использования инверсии управления - это внедрение зависимых объектов через конструктор (внедрение конструктора).

Однако, если я Вызов этих объектов вне объекта, использующего их, я чувствую, что нарушаю какое-то правило - это так? Я не думаю, что есть способ предотвратить это,

[EDIT] Вот упрощенный пример того, что я делаю. У меня есть объект FileController , который в основном используется для каталогизации файлов. Он использует объект FileDal , который обращается к базе данных для вставки / запроса / обновления таблиц File и Directory .

В моей реальной реализации я создаю контроллер указав Castle использовать версию DAL для SQL Server, в своем модульном тесте я использую версию DAL на Sqlite в памяти. Однако из-за того, как реализован DAL, мне нужно вызвать BeginTransaction и Commit вокруг использования FileController , чтобы соединение не закрывалось, и я мог позже выполнять извлечения и утверждения. Почему я должен это делать, не так уж важно, но это навело меня на мысль, что вызов методов объекта DAL, который используется другими клиентами (контроллерами), не звучит кошерно. Вот пример:

FileDal fileDal = CastleFactory.CreateFileDal();
fileDal.BeginTransaction();
FileController fileController = new FileController(fileDal);
fileController.CallInterestingMethodThatUsesFileDal();
fileDal.Commit();
1
задан Otávio Décio 18 September 2010 в 20:22
поделиться