Это на самом деле походит на IIS Low
уровень. Если это будет, то Вы не будете в состоянии записать в любой файл, не просто web.config.
Вот уровни от справочного файла IIS:
- Полный (внутренний) - Определяет неограниченные полномочия. Дает разрешения приложения ASP.NET получать доступ к любому ресурсу, который подвергается защите операционной системы. Поддерживаются все привилегированные операции.
- Высокий (web_hightrust.config) - Определяет высокий уровень безопасности доступа к коду, что означает, что приложение не может сделать ни одной из следующих вещей по умолчанию:
- Вызов неуправляемый код.
- обслуженные компоненты Вызова.
- Запись к журналу событий.
- сервисные очереди Организации очередей сообщений Доступа.
- ODBC Доступа, OleDb или источники данных Oracle.
- Носитель (web_mediumtrust.config) - Определяет средний уровень безопасности доступа к коду, что означает, что в дополнение к Высоким Доверительным ограничениям Уровня приложение ASP.NET не может сделать ни одной из следующих вещей по умолчанию:
- файлы Доступа вне каталога приложения.
- Получают доступ к реестру.
- сетевая служба Make или вызовы веб-сервиса.
- Низкий (web_lowtrust.config) - Определяет низкий уровень безопасности доступа к коду, что означает, что в дополнение к Средним Доверительным ограничениям Уровня приложение не может сделать ни одной из следующих вещей по умолчанию:
- Запись к файловой системе.
- Вызов Утверждать метод.
- Минимальный (web_minimaltrust.config) - Определяет минимальный уровень безопасности доступа к коду, что означает, что приложение имеет, только выполняют полномочия.
я предложил бы, чтобы, если Вы - тупик при наличии установщика, иметь его создали web.config
в памяти, которую пользователь может сохранить локально и FTP
позже.
Template parameters have to be compile-time constant. Currently no compiler considers a loop counter variable to be a constant, even after it is unrolled. This is probably because the constness has to be known during template instantation, which happens far before loop unrolling.
But it is possible to construct a "recursive" template and with a specialization as end condition. But even then the loop boundary needs to be compile time constant.
template<int i>
class loop {
loop<i-1> x;
}
template<>
class loop<1> {
}
loop<10> l;
will create ten template classes from loop<10> to loop<1>.
Вероятно, это можно было бы сделать с помощью библиотеки метапрограммирования Boost . Но если вы не использовали его раньше или привыкли к чрезмерному программированию шаблонов, он, вероятно, не будет стоить того объема работы, который потребуется, чтобы научиться это делать.
спасибо, ребята.
доктор Хирш ближе всего к тому, что нужно, но в конечном итоге предыдущее решение является самым чистым. Позвольте мне повторить проблему: несколько шаблонов необходимо было создать во время компиляции с использованием постоянных параметров
f0 = f<0,0>();
f1 = f<0,1>();
...
fk = f<m,n>();
для любого значительного числа m, а создание шаблона n развертывания делает код загруженным. С препроцессором Boost я сделал следующее:
#include "boost/preprocessor/seq/for_each_product.hpp"
#include "boost/preprocessor/seq/to_tuple.hpp"
#define SEQ_MASK (0x1)(0x3)
#define SEQ_M (1)(2)
#define SEQ_N (1)(2)
#define INSTANCE(r, tparams) { \
Kernel kernel = Instance<BOOST_PP_SEQ_ENUM(tparams)>(); \
kernels[kernel.key()] = kernel; }
BOOST_PP_SEQ_FOR_EACH_PRODUCT(INSTANCE, (SEQ_MASK)(SEQ_M)(SEQ_N));
после запуска препроцессора он производит все комбинации трех определенных последовательностей.
Я не думаю, что это возможно во время выполнения, потому что MyClass <1>
и MyClass <2>
- абсолютно разные классы.
Но у меня есть одна идея: если вы знаете все возможные значения, вы можете написать переключите
в заводском классе и передайте это целое число в качестве параметра в фабрику.
Шаблоны создаются во время компиляции, а не во время выполнения, поэтому вы вообще не можете создать их в цикле.