web-dev-qa-db-fra.com

'Classe' ne contient pas de définition pour 'Méthode'

En classe Employee j'ai quelques méthodes qui fonctionnent bien. Maintenant, je voulais ajouter une nouvelle méthode, par exemple

public void ExampleMethod()
{         
}

Puis je l'appelle

Employee employee = new Employee();
employee.ExampleMethod();

ExampleMethod est présent dans IntelliSense affiché après le point. Lorsque je frappe F12, il me redirige également vers cette méthode, mais lors du démarrage du projet, une erreur s'est produite. 'acceptant un premier argument de type' Employee 'pourrait être trouvé (il vous manque une directive using ou une référence Assembly?)

Je ne sais pas pourquoi cette erreur est provoquée, car toutes les autres méthodes précédentes fonctionnent correctement. Quel est le problème?

16
vanilla161

Il y a trois possibilités:

1) Si vous faites référence à l'ancien DLL, il ne peut pas être utilisé. Donc, vous avez référé nouvelle DLL

2) Si vous l'utilisez dans un espace de noms différent et essayez d'utiliser la DLL de l'autre espace de noms, il ne fera pas référence à cette méthode.

3) Vous devrez peut-être reconstruire le projet 

Je pense que la troisième option pourrait être la cause pour vous. S'il vous plaît poster plus d'informations afin de comprendre le problème exact du vôtre.

21
VIRA

Créer une classe avec un nom d'espace de noms peut résoudre votre problème 

namespace.Employee employee = new namespace.Employee(); 
employee.ExampleMethod();
5
Pranay Rana

J'ai eu le même problème. Il s'avère que le projet auquel je faisais référence n'a pas été compilé . Lorsque je suis allé dans le gestionnaire de configuration de compilation de Visual Studio et que j'ai activé le projet de référence, le problème a été résolu.

2
Serge

Si vous utilisez une classe d'un autre projet, le projet doit reconstruire et créer re-dll. Assurez-vous que "Build" est coché pour ce projet sur Build -> Configuration Manager in Visual Studio . Donc, le projet de référence va reconstruire et mettre à jour la dll.

1
Heshan

Je viens de rencontrer ce problème; le problème semble différent des autres réponses affichées ici, alors je le mentionnerai au cas où cela aiderait quelqu'un.

Dans mon cas, j'ai une classe de base interne définie dans un assemblage ("A"), une classe dérivée interne définie dans un deuxième assemblage ("B") et un assemblage test ("TEST"). J'ai exposé les composants internes définis dans l'assemblage "B" à "TEST" en utilisant InternalsVisibleToAttribute, mais en négligeant de le faire pour l'assemblage "A". Cela a entraîné l'erreur mentionnée en haut, sans autre indication du problème; L'utilisation de InternalsVisibleToAttribute pour exposer l'assembly "A" à "TEST" a résolu le problème.

1
ket

J'avais le même problème lorsque je travaillais dans une solution avec plusieurs projets partageant le même code… .. Il s'est avéré que j'avais oublié de mettre à jour le fichier DLL dans le dossier du deuxième projet.

Ma suggestion est de bien regarder la colonne "projet" dans la fenêtre de la liste des erreurs et assurez-vous que ce projet utilise également la bonne DLL.

0
Dominic Rooijackers

Aujourd'hui, j'ai rencontré un problème avec exactement les mêmes symptômes que vous décrivez. J'ai fermé tous les fichiers et redémarré VS uniquement pour découvrir que certains fichiers ont disparu de l'Explorateur de solutions.

Ce qui suit a résolu mon problème: en sélectionnant le projet actuel dans l'explorateur de solutions, une petite icône Show all files apparaît dans la barre supérieure. En cliquant avec le bouton droit sur le fichier et en sélectionnant Include In Project, vous agissez.

Crédit

0
Tilwaen

J'ai eu le même problème. J'ai changé la version de l'assembly dans AssemblyInfo.cs dans le dossier des propriétés. Mais, je n'ai aucune idée pourquoi ce problème est arrivé. Peut-être que le compilateur ne comprend pas que cette dll est plus récente, il suffit de changer la version de Assembly.

0
Renato Carvalho