2012-07-02 4 views
0

Juste créé un fichier .dll qui a quelques méthodes. Et j'ai un autre projet avec une bibliothèque de classes et une application cliente qui se réfèrent entre elles et fonctionnent bien.Pourquoi ne puis-je pas utiliser les objets de .dll dans ma bibliothèque de classes?

Le problème est que je référence le .dll que je viens de créer dans la bibliothèque de classes, mais ne peux pas utiliser les méthodes qui sont disponibles dans le fichier .dll. (Je peux les voir dans le navigateur d'objets et tout semble bien).

Comme quand je tente:

Cache cache = new Cache("blabla"); 

je reçois:

La référence i made.Cache » est un espace de noms, mais est utilisé comme un 'type'. Mais quand j'ajoute une référence dans l'application cliente (qui est une application de console).

Ensuite, je n'ai pas de problèmes et peut utiliser les méthodes facilement. Pourquoi est-ce que donne mes problèmes dans la bibliothèque de classe ??

suggestions

+1

Poster un code s'il vous plaît –

+1

probablement parce que votre espace de noms est également appelé 'cache', ou parce que vous manquez une déclaration' using'. Utilisez un identifiant plus spécifique, tel que 'cache = new YourDllNameSpace.Cache()' pour l'instancier. – CodeCaster

+0

Incluez-vous un espace de noms qui se termine par 'Cache'? – jrummell

Répondre

2

Ceci est tout simplement un conflit de nom avec un espace de noms qui est portée et comporte le mot Cache en elle , probablement à la fin (quelque chose comme namespace MyCompany.MyNamespace.Cache { }).

Vous devez qualifier complètement le type en ligne ou dénouer les espaces de noms et d'utiliser using déclarations en haut:

MyNamespace.Cache cache = new MyNamespace.Cache(""); 

Essayez de suivre la namespace naming guidelines pour éviter cette situation:

Do n'utilise pas le même nom pour un espace de noms et une classe. Par exemple, ne fournit pas à la fois un espace de noms de débogage et une classe de débogage.

2

Il n'y aurait aucune raison pour cela à moins Cache est interprété comme un espace de noms au sein de la bibliothèque de classes. Soit qualifier complètement la classe lors de l'instanciation:

var cache = new SomeNamespace.Cache(); 

Ou utilisez un alias à la classe:

using MyCache = SomeNamespace.Cache; 
... 
var cache = new MyCache(); 
0

Essayez pleinement qualifier votre type: MyDllAssembly.Cache cache = new MyDllAssembly.Cache();

Questions connexes