У меня есть фрагмент C# код, который выглядит следующим образом:Использование параметров конфигурации в атрибутах
[OracleCustomTypeMapping(Constants.DBSchema + ".TAB_VARCHAR2_250")]
public class StringTableFactory : TableFactoryTemplate<StringTable>
{
public override System.Array CreateStatusArray(int length)
{
return new OracleUdtStatus[length];
}
}
Есть ли способ, чтобы изменить объявление атрибута, так Constants.DBSchema считываются из web.config вместо того, он жестко закодирован как константа в коде? Если я поместил ConfigurationManager.appSettings в объявление атрибута, я получаю ошибку «Аргумент атрибута должен быть константным выражением ...».
Спасибо.
атрибутов аргументы должны быть во время компиляции константы, параметры конфигурации, очевидно, не являются. Лучшее, что вы могли бы надеяться на использование чего-то, что является обертыванием значений конфигурации, - это поле «static readonly», которое является постоянной времени выполнения (внутри AppDomain), но не во время компиляции. –
Сообщение об ошибке объясняет все это. Атрибуты должны быть константами времени компиляции. Очевидно, что настроек конфигурации нет. –