Ok, j'ai un projet C# nommé BusinessLayer qui produit un assembly appelé BusinessLayer et l'espace de noms est BusinessLayer.Silly Namespace Question
À l'intérieur de ce projet, j'utilise des dossiers pour stocker du code. Un dossier s'appelle FilterElements et il a des dossiers appelés FilterKeyReversal, FilterRandom et FilterToday. Prenons l'exemple du dossier FilterRandom. Il a une classe appelée LessThan10DaysGreaterThan50A avec un espace de noms de BusinessLayer.FilterElements.FilterRandom et une seule méthode statique publique appelée RunFilter();
Dans le code derrière la page du site Web qui utilise cette méthode, j'ai l'instruction using, Using BusinessLayer. J'ai également une autre instruction utilisant, en utilisant BusinessLayer.FilterElements.
Je pense que pour exposer la méthode RunFilter() de la classe LessThan10DaysGreaterThan50A, je pourrais utiliser la syntaxe suivante: FilterRandom.LessThan10DaysGreaterThan50A.RunFilter(), mais je reçois l'erreur suivante: Le nom FilterRandom n'existe pas dans la contexte actuel.
Si j'utilise la ligne de syntaxe suivante, l'erreur disparaît: BusinessLayer.FilterElements.FilterRandom.LessThan10DaysGreaterThan50A.RunFilter(), ou si j'utilise une instruction à l'aide de: Utilisation BusinessLayer.FilterElements.FilterRandom, la syntaxe suivante fonctionne: LessThan10DaysGreaterThan50A.RunFilter().
Je préfère utiliser FilterRandom.LessThan10DaysGreaterThan50A.RunFilter() car il semble rendre le code plus lisible. Si j'utilise un alias avec la syntaxe suivante d'utilisation de FilterRandom = BusinessLayer.FilterElements.FilterRandom, je peux obtenir ce que je veux, mais je n'aime pas vraiment l'idée d'utiliser un alias car cela peut mener à la confusion sur toute la ligne. Je pensais que puisque mon espace de noms BusinessLayer avait des espaces de noms imbriqués, je serais capable de récupérer l'espace de noms restant, mais je n'arrive pas à le faire fonctionner. Quelqu'un sait comment faire ce travail sans utiliser d'alias, ou vais-je devoir utiliser le nom entier de l'espace de noms à chaque fois?
Merci.
Cela fonctionne en VB.NET, mais pas en C#. L'alias est tout ce que tu as. –
J'ai deuxième @Hans - couru dans ce numéro l'autre jour, moi-même. Incidemment, pourquoi une classe qui est verrouillée à une règle métier très spécifique (moins de 10 jours, etc.) au lieu de simplement implémenter un filtre qui peut fonctionner sur une plage de dates arbitraire? –
Que diriez-vous d'une classe interne imbriquée au lieu d'un espace de noms? Ou Quelque chose comme FilterRandom.FilterLessThan10DaysGraterThan50A() à la place. – mellamokb