.NET Plusieurs espaces de noms pour une seule classe
Est-il possible d'avoir une classe unique de séjourner dans un délai de deux nom-espaces et comment puis-je faire cela?
Pour clarifier les choses: Nous avons une bibliothèque de classe (disons espace de noms racine est classLib1), qui a grandi au fil du temps (plus de classes) et je veux logiquement des cours de groupe dans des espaces de noms différents.
Cependant, certaines des anciennes classes doivent être regroupées dans ces nouveaux espaces de noms (e.g classLib1.section1) et cela lui permet de briser l'héritage du code dans d'autres assemblys qui utilisent cette bibliothèque de classe. Donc, je veux être en mesure de se référer à une classe en utilisant à la fois le nom des espaces jusqu'à ce que nous pouvons phase les anciennes.
Je ne trouve aucune information sur ce qui suggère qu'il existe une raison que les gens ne veulent pas le faire!?!
Je veux, mais je ne suis pas autorisé à toucher le code des autres - à l'est sur la ligne si une erreur est faite.
Ensuite, les façades sont vos amis.
OriginalL'auteur Mr Shoubs | 2010-09-27
Vous devez vous connecter pour publier un commentaire.
Non, il n'est pas possible de donner une seule classe, deux noms (l'espace de noms est en fait qu'une partie du nom de la classe).
Comme une solution de contournement, vous pouvez déplacer les classes à leur nouvel emplacement, et de créer des wrappers minces autour d'eux à l'ancien emplacement (Façade Modèle). Une meilleure solution, bien sûr, serait de déplacer les classes et de fixer l'héritage de code en conséquence.
Putain vous, me battre pour elle 🙂
J'avais pensé à la création d'une façade de la couche, mais c'était de voir si il y avait un plus facile à contourner.
OriginalL'auteur dtb
Comme un travail, vous pouvez 'aide' de la classe dans le deuxième espace de noms lorsque vous en avez besoin:
et dans chaque fichier qui l'utilise dans l'ancien espace de noms, vous pouvez ajouter une ligne
comme un patch temporaire jusqu'à ce que vous avez fixé correctement.
OriginalL'auteur Rup
Type De Transfert a été introduit en .net 2.0, ce qui signifie que vous pouvez utiliser le
TypeForwardedToAttribute
attribut pour indiquer qu'un type qui était présente à l'origine dans AssemblyX se trouve aujourd'hui dans AssemblyY.Je suis assez sûr que c'est seulement en cas/si vous êtes à la sépare en plusieurs assemblées, mais il faut savoir, même si ce n'.
OriginalL'auteur Rob