2010-11-29 13 views
0

J'ai un nom de classe dans l'espace de noms Inventory_Software.BL avec le nom BL, et je veux accéder à cette classe dans Inventory_Software.PL.Item_Master classe, mais en dépit de l'utilisation de la syntaxe using Inventory_Software.BL avant espace de noms dans cette classe, je m obtenir une erreur:erreur d'espace de noms dans C#

'Inventory_Software.BL' is a 'namespace' but is used like a 'type' 

chaque fois que je tente de initialiser BL classe avec la syntaxe:

BL businesslayer = new BL(); 

Quelqu'un pourrait-il me dire pourquoi?

Répondre

5

Fondamentalement, vous êtes dans un monde de douleur quand vous commencez à donner une classe le même nom que un espace de noms. Ne le faites pas, renommez votre classe ou votre espace de noms.

Vous probablement pouvez pouvez le contourner avec des directives d'utilisation appropriées, mais est-ce vraiment la peine de beaucoup de douleur? (Personnellement, je n'utiliserais pas "BL" comme nom pour un espace de noms ou une classe, ni un trait de soulignement dans un nom, mais c'est une question différente.)

Eric Lippert a series of four blog - "ne nommez pas une classe identique à son espace de noms":

+0

Les quatre parties sont ici: http://blogs.msdn.com/b/ericlippert/archive/tags/namespaces/ –

+0

@Eric: Doh - n'avait pas remarqué le reste, désolé :) –

0

depuis sa Inventory_Software.BL, vous avez initialisé un espace de noms dans un espace de noms, au lieu, faites ceci:

Inventory_Software.BL businessLayer = new Inventory_Software.Bl(); 
0

Le compilateur ne peut pas faire la différence entre le fait de référencer l'espace de noms ou le type. Modifiez l'espace de nom pour qu'il ne soit pas BL ou remplacez le nom de la classe par un autre que BL. appeler Peut-être qu'il BusinessLayer à la place ...

0

Avez-vous vérifié pour voir si vous avez un namespace appelé BL et une classe appelée BL. Si c'est le cas, vous devrez utiliser la référence complète de la classe ou modifier le nom de votre classe/espace de noms.

0

Vous essayez de créer un objet de BL. Mais BL n'est pas une classe. C'est juste un espace de noms.

Vous pouvez créer un objet d'une classe en spécifiant le nom de la classe.Dans votre code, vous devez avoir quelque chose comme

public class NameofYourClass

{

// vos méthodes ici

}

Ainsi, dans ce cas, vous serez en mesure écrire

NameofYourClass yourObject = new NameofYourClass(); 
0

Apparemment, vous avez une classe Inve ntory_Software.BL.BL et vous essayez d'accéder à partir de la portée de Inventory_Software.PL.Item_Master.

Comme prévu, un nom non qualifié BL se résoudrait à 'Inventory_Software.BL' et non à 'Inventory_Software.BL.BL'.

Vous pouvez supprimer en ajoutant l'une des usings suivantes

utilisant Inventory_Software.BL; OU simplement en utilisant BL;