2010-08-27 4 views
-1

Je namespace avec énumérations:énumérations erreur de déclaration de portée

namespace Search 
{ 
    enum SearchConditionType 
    { 
     Like = 0, 
     EqualNotString = 1, 
     EqualString = 2 
    }; 
} 

J'essaie de déclarer ENUM:

namespace Search 
{ 

    public partial class Controls_SelectYesNo : System.Web.UI.UserControl 
    { 

     public SearchConditionType Field; 
     ... 

et a obtenu une erreur:

The type or namespace name '' could not be found (are you missing a using directive or an assembly reference?)

Qu'est-ce qui ne va pas?

Répondre

0

Le problème était dans la suivante: J'ai fait une application Web à partir du site Web. Dans le site Web enums était situé dans le dossier App_Code. Lorsque je renommer ce dossier - le problème disparaît.

1

Faire l'ENUM public:

public enum SearchConditionType 
{ 
    Like = 0, 
    EqualNotString = 1, 
    EqualString = 2 
}; 

Les types qui ne disposent pas d'un défaut de modificateur d'accès à internal en C#.

Si les fichiers se trouvent dans des assemblages différents, vous devez ajouter une référence à l'assembly contenant l'énumération. Cela peut être effectué via le nœud References du projet dans l'Explorateur de solutions.

+0

Cela n'aide pas. – Anton

+0

Ahem: vous voulez dire "interne" – Randolpho

+0

@Randolpho - Je ne cherche pas à deviner si cela devrait être interne ou public. Perhpas devrait être public - cela dépend de ce à quoi il est utilisé, qu'il s'agisse bien d'un détail de mise en œuvre interne ou non. – Oded

3
enum SearchConditionType 

Votre enum n'est pas publique.

+0

en supposant que Controls_SelectYesNo et SearchConditionType sont dans des assemblages différents, c'est probablement la bonne réponse –

+0

Comment les placer dans un même assemblage? – Anton

+0

public enum n'aide pas. – Anton

0

Hmm ... vous êtes en essayant d'exposer un type interne comme un type public. C'est le seul problème que je vois avec votre code. Mais cela ne devrait pas causer l'erreur du compilateur que vous fournissez, donc je pense que le problème est peut-être ailleurs dans votre code.

éditer: Essayez-vous d'exposer l'énumération dans un autre assemblage? Cela provoquerait l'erreur que vous indiquez. Alors, oui, rends publique l'enum.

+0

Comment les placer dans un même assemblage? – Anton

+0

@Anton: si vous avez rendu publique l'enum ... cela devrait fonctionner. Avez-vous ajouté une référence à l'assembly contenant l'enum public? – Randolpho

Questions connexes