Я знаю, что это уже не имеет значения, но для будущих читателей я добавлю свое решение для аналогичной проблемы.
Я хотел создать провайдера, который бы добавлял некоторые функции к любому другому провайдеру (шаблон декоратора), поэтому я хотел добавить внутреннего провайдера в коллекцию провайдеров (для вышеупомянутого - он не будет работать, потому что если провайдер отсутствует в коллекции провайдеров, он не сможет создавать пользователей).
Мне не понравилось решение для отражения по двум причинам:
Очевидный - он нарушает инкапсуляцию.
Второй - код должен выполняться без разрешений на отражение, в противном случае любой фрагмент кода сможет добавить своего поставщика - так что любая безопасность будет скомпрометирована.
(простое) решение, которое я нашел, состояло в том, чтобы зарегистрировать обоих поставщиков в web.config, установить поставщика по умолчанию для моего поставщика и загрузить второго поставщика во время выполнения из коллекции поставщиков.
По первому вопросу - если вы знаете, какие поставщики вам понадобятся до выполнения, лучше зарегистрировать их в web.config и, возможно, изменить их свойства во время выполнения.
Другое решение (которое все еще было бы «правильным», но медленным) состояло бы в том, чтобы делегировать проверку безопасности небольшому exe-файлу, изменить его app.config, запустить его и вернуть результат в качестве вывода (ваш провайдер может сделать этот).
DPAPI может обеспечить безопасность для доставки пароля.