Отражение. Сеть: как загрузить зависимости?

Адаптированный код для включения проверки свойств массива существует до их обращения:

    $vendel = array();
    $indexArray = array();
    foreach ($vd_arr as $miniarray) {

        // Skips adding this mini array if an ID is note present
        if(($id = isset($miniarray['id']) ? $miniarray['id'] : null) === null) {
            continue;
        }

        // The default values at the end of these lines can be swapped out for more suitable defaults
        $qty = isset($miniarray['qty']) ? $miniarray['qty'] : 0;
        $delivnote_id = isset($miniarray['delivnote_id']) ? $miniarray['delivnote_id'] : null;

        $vendel[$id]['id'] = $id;
        $vendel[$id]['qty'] += $qty;
        $vendel[$id]['delivnote_id'] = $delivnote_id;
    }

    foreach($vendel as $value) {
        $indexArray[] = $value;
    }

    return $indexArray;

Это также пропускает добавление элемента $ miniarray, который не имеет идентификатора.

29
задан ScottCher 30 October 2008 в 15:05
поделиться

5 ответов

Если MyTools.dll расположен в том же каталоге как Addon.dll , все, что необходимо сделать, звонить Assembly.LoadFrom вместо Assembly.LoadFile, чтобы заставить код работать. Иначе обрабатывая AppDomain.AssemblyResolve событие является способом пойти.

43
ответ дан Andreas Tschager 14 October 2019 в 08:23
поделиться

Вы изучили использование Инверсия Управления контейнер? Я использую замок Windsor с внешним файлом Шиканья, который позволяет мне легко расширить applcation, не имея необходимость перекомпилировать или волноваться о предоставлении зависимостей

2
ответ дан Chris Canal 14 October 2019 в 08:23
поделиться

Можно использовать отражение для доступа к частному Assembly. _GetReferencedAssemblies() .

, Хотя, метод мог изменение в будущей версии платформы.NET, не кажется, что likely— ASP.NET в большой степени зависит от него, хотя возможно, что они могли переместить его от mscorlib до System.Web, который является единственным блоком, о котором я знаю от того, где метод упомянут.

1
ответ дан Mark Cidade 14 October 2019 в 08:23
поделиться

Блок. LoadFrom работает хорошо, пока я не пытаюсь использовать веб-сервис в своем дополнении, я имел" Неспособный бросить объект типа 'X' к типу 'X' " исключение.

Это ужасно, но я буду использовать блок. LoadFile с AppDomain. AssemblyResolve.

парни Спасибо.

1
ответ дан Olivier de Rivoyre 14 October 2019 в 08:23
поделиться

Несколько опций:

  1. можно присоединить к AppDomain.AssemblyResolve, чтобы помочь CLR разрешить блок.
  2. Вы могли изучить изоляцию дополнений в их собственное AppDomain (см. System.AddIn пространство имен и этот веб-сайт ).
1
ответ дан Tim Cooper 14 October 2019 в 08:23
поделиться
Другие вопросы по тегам:

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