Краткий ответ: Да.
Длинный ответ: Требуется немного кропотливой работы и некоторые эксперименты по настройке, но это можно сделать без существенного нарушения CSLA. Я собрал рабочий прототип, используя StructureMap и шаблон репозитория, и использовал метод BuildUp Setter Injection для внедрения в CSLA. Я использовал метод, похожий на тот, который был найден здесь , чтобы гарантировать, что мои бизнес-объекты повторно вводятся при сериализации объектов.
Я также использую базовый класс реестра StructureMap для разделения моей конфигурации на презентацию, клиент CSLA, сервер CSLA и глобальные настройки CSLA. Таким образом, я могу использовать функцию связанных файлов в Visual Studio для включения сервера CSLA и глобальных файлов конфигурации CSLA в портал данных на стороне сервера, и конфигурация всегда будет одинаковой в обоих местах. Это должно было гарантировать, что я все еще могу изменить параметры конфигурации портала данных в CSLA с 2 уровня на 3 уровня без каких-либо нарушений.
В любом случае, я все еще оцениваю потенциальные выгоды с недостатками использования DI, но пока я склоняюсь в направлении его использования, потому что тестирование будет намного проще, хотя я скептически отношусь к попытке использовать любые из расширенных функций DI, таких как перехват. Я рекомендую прочитать книгу Mark Seemann Внедрение зависимостей в .NET , чтобы понять, как правильно и неправильно использовать DI, потому что в Интернете много дезинформации.