MEF по сравнению с любым МОК

Встроенное getopts команда тиха, AFAIK, ограниченный односимвольными опциями только.

Существует (или используется, чтобы быть) внешняя программа getopt это реорганизовало бы ряд опций, таким образом, что было легче проанализировать. Вы могли адаптировать тот дизайн для обработки долгих опций также. Использование в качестве примера:

aflag=no
bflag=no
flist=""
set -- $(getopt abf: "$@")
while [ $# -gt 0 ]
do
    case "$1" in
    (-a) aflag=yes;;
    (-b) bflag=yes;;
    (-f) flist="$flist $2"; shift;;
    (--) shift; break;;
    (-*) echo "$0: error - unrecognized option $1" 1>&2; exit 1;;
    (*)  break;;
    esac
    shift
done

# Process remaining non-option arguments
...

Вы могли использовать подобную схему с a getoptlong команда.

Обратите внимание что фундаментальная слабость с внешним getopt программа является трудностью обработки споров с пробелами в них, и в сохранении тех пробелов точно. Это то, почему встроенное getopts выше, хотя ограничено фактом, он только обрабатывает однобуквенные опции.

67
задан Robert Harvey 6 October 2017 в 20:59
поделиться

2 ответа

Основное отличие состоит в том, что контейнеры IoC обычно наиболее полезны со статическими зависимостями (известными во время компиляции), а MEF обычно наиболее полезен с динамическими зависимостями (известными только при запуске -time).

Таким образом, они оба являются движками композиции, но акценты сильно различаются для каждого шаблона. Таким образом, проектные решения сильно различаются, поскольку MEF оптимизирован для обнаружения неизвестных частей, а не для регистрации известных частей.

Подумайте об этом так: если вы разрабатываете все свое приложение, контейнер IoC, вероятно, лучше всего. Если вы пишете о расширяемости, так что сторонние разработчики будут расширять вашу систему, MEF, вероятно, лучший.

Кроме того, статья в ответе @Pavel Nikolov дает отличное направление (она написана Гленном Блоком, программой MEF управляющий делами).

75
ответ дан 24 November 2019 в 14:40
поделиться

Я согласен с тем, что MEF может быть полнофункциональной инфраструктурой IoC. Фактически, прямо сейчас я пишу приложение, основанное на использовании MEF как для расширяемости, так и для IoC. Я взял из него общие части и превратил его в «фреймворк» и открыл исходный код как отдельный фреймворк под названием SoapBox Core на тот случай, если люди захотят увидеть, как он работает.

В частности, возьмите посмотрите, как работает Хост , если вы хотите увидеть MEF в действии.

1
ответ дан 24 November 2019 в 14:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: