2010-09-28 5 views
0

Я знаю, что параметры атрибутов атрибутов должны быть постоянным выражением и разрешаться во время компиляции. Однако можно ли играть с концепцией «время компиляции»? ASP.net имеет концепцию папки App_Code. Это похоже на описание, которое вы можете отбросить в него .cs-файлы, даже когда приложение запущено, и оно будет загружено и скомпилировано. Можно ли использовать этот механизм для динамического создания массива Enum или const, который можно использовать в объявлении атрибута?Динамические параметры для атрибутов

[SomeAttribute(ValidTypes.SomeType)] 
public class Foo 
{ 
} 

В принципе, я хочу, чтобы динамически расти действительных типов в ValidTypes без необходимости перекомпиляции всех компонентов, которые ссылаются на него. И мне нужно синхронизировать его со списком значений в таблице базы данных. Итак, мой вопрос: могу ли я удалить файл .cs с определением для массива Enum или const string в App_Code и автоматически ли он отображаться? Или еще лучше, это механизм .Net использует, чтобы сделать это доступным для вызова в другом месте, поэтому мне не нужно делать это в приложении ASP.Net?

+0

http://stackoverflow.com/questions/3357109/whats-the-simplest-most-elegant-way-to-utilize-a-custom-attribute/3357145#3357145 – asawyer

+0

Извините, но это не относится к делу. Я знаю, как создавать и использовать пользовательский атрибут. Я пытаюсь обойти проблему, когда атрибутные аргументы должны быть статически определены во время компиляции. –

ответ

0

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

+0

если мой код был ... if (constArray.Contains (value)) blah ... он удовлетворяет требованию атрибута наличия аргументов константами. И если определение constArray может быть динамически загружено (или обновлено), отбросив файл .cs в App_Code, тогда теоретически это будет работать без необходимости перекомпиляции. –

Смежные вопросы