2010-09-28 4 views
0

Je sais que les paramètres des déclarations d'attributs doivent être une expression constante et résolus au moment de la compilation. Cependant, puis-je jouer avec le concept de «temps de compilation»? ASP.net a le concept du dossier App_Code. Il a l'air de sa description comme si vous pouviez y déposer des fichiers .cs, même lorsque l'application est en cours d'exécution, et qu'elle sera compilée. Est-il possible d'utiliser ce mécanisme pour créer dynamiquement un tableau Enum ou const qui peut être utilisé dans une déclaration d'attribut?Paramètres dynamiques pour les attributs

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

Fondamentalement, je veux grandir dynamiquement les types valides dans ValidTypes sans avoir à recompiler tous les composants qui y font référence. Et je dois le synchroniser avec une liste de valeurs dans une table de base de données. Donc, ma question est, puis-je déposer un fichier .cs avec la définition d'un tableau de chaînes Enum ou const dans App_Code et le faire apparaître automatiquement? Ou mieux encore, le mécanisme .Net utilise-t-il cette fonctionnalité pour être appelé ailleurs, donc je n'ai pas besoin de le faire dans une application ASP.Net?

+0

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

+0

Désolé, mais ce n'est pas pertinent. Je sais comment créer et utiliser un attribut personnalisé. J'essaie de contourner le problème où les arguments d'attribut doivent être définis statiquement au moment de la compilation. –

Répondre

0

même si vous le pouvez, vous devez recompiler l'application à utiliser les valeurs ajoutées. sonne comme ce que vous voulez est le code dans l'attribut pour rechercher les valeurs dynamiques.

+0

si mon code était ... if (constArray.Contains (value)) blah ... cela satisferait à l'exigence de l'attribut d'avoir des arguments constants. Et si la définition de constArray pouvait être chargée dynamiquement (ou mise à jour) en déposant un fichier .cs dans App_Code, alors théoriquement cela fonctionnerait sans avoir besoin de recompiler. –

Questions connexes