Как избежать связывания с контейнером IoC

Я в процессе разработки расширяемого фреймворка с использованием DI и IoC. Пользователи должны иметь возможность переопределять существующие функциональные возможности в рамках, отбрасывая свои собственные реализации в контейнер.

Как я могу позволить пользователям делать это, не требуя от них знать, какой контейнер IoC я использую?

Моя текущая половина пути Решение состоит в том, чтобы структурировать мои сборки следующим образом:

1) Определите абстрактные сборки, содержащие только интерфейсы.

2) Определите конкретные сборки, которые реализуют эти интерфейсы. Пользователи могут определять свои собственные, чтобы переопределить существующие функции.

3) Определить привязки контейнеров в отдельных сборках; то есть одна связующая сборка на конкретную сборку.

Это означает, что бетонные сборки не связаны с конкретным контейнером IoC, и они были бы закрыты от изменений, если бы я использовал другой контейнер. Однако пользователям по-прежнему необходимо знать, какой контейнер использует моя структура, чтобы писать сборки привязки, и им нужно будет выпустить новые сборки привязки, если я изменил контейнер IoC (т.е. с Ninject на Spring). myProg param1 param2 param3

Меня попросили написать программу, которая в основном анализирует переданный ей файл с перенаправлением stdin, например:
myProg param1 param2 param3

Я пытаюсь использовать функцию fopen, чтобы открыть данный файл, но я не понимаю, что я должен указать в аргументе 'const char * filename'.

5
задан Zach 26 April 2011 в 11:24
поделиться