<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
Je suis entrain de développer une application en c# , mon projet contient deux solutions
(CodeBase et Presentation)
Dans la partie Code Base j’ai créé un répertoire (namespace) dans la partie CodeBase et j’y rajouté une classe que j’ai appelé « OFileSelector » permettant de rendre le chemin du fichier sélectionné à partir d’un OpenFileDialog.
Dans la partie présentation j’ai appelé la méthode de ma classe « OFileSelector » mais lors de compilation il m’affiche le message d’erreur :
Erreur 6 Le type ou le nom d'espace de noms 'OFileSelector' n'existe pas dans l'espace de noms 'myrep…' (Une référence d'assembly est-elle manquante ?).
J’ai rajouté la référence (using System.Windows.Forms), dans le menu contextuel il me propose bien OfileSelector et la methodeReturnFilePath
mais ça affiche toujours la même erreur .
Voici les ligne de mon code.
OFileSelector
fs = newOFileSelector();
mavar
= fs.ReturnFilePath(); (avec ReturnFilePath et la methde de ma classe
OfileSelector)
un peu touffu ton explication ;-)
mais l'erreur peut venir de 2 sources:
- la classe que tu veux utiliser fait partie d'un namespace different de la classe appelante, et il manque une clause using avec le namespace de la classe appelée.
- le code de la classe tu tu veux utiliser est situé dans une DLL qui ne fait pas partie des reference du projet appelant, (clique droit sur reference -> ajouter une reference -> rechercher la DLL implementant la classe)
<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
Ma classe appelée est situé dans un namespace X.Y.DoneeReseau
Voici sa définition :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace X.Y.DonneesReseau
{
public sealed class OFileSelector
{
public string ReturnFilePath()
{
System.Windows.Forms.OpenFileDialog OpenFile = new OpenFileDialog();
OpenFile.Title = "Associer un document externe ...";
if (OpenFile.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
return OpenFile.FileName;
}
}
}
}
dans la classe appelante j’ai bien rajouté le namespace X.Y.DonneesReseau …
j’appelle la méthode ReturnFilePath en faisant :
OfileSelector fs = new OfileSelector() ;
Var = fr. ReturnFilePath() ;
Mai lors de la compilation il m’affiche toujours la même erreur :
Le type ou le nom d'espace de noms 'OFileSelector' n'existe pas dans l'espace de noms X.Y.DonneesReseau' (Une référence d'assembly est-elle manquante ?).
En fait ma solution est composé de 2 projets un pour la présentation formulaires et codes de événement et un pour les classes de BLL et accès aux données.
<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
Dans moi depuis l'événement click de mon bouton j'appelle la méthode de ma classe (ReturnFilePath)
En fait ma solution est composé de 2 projets un pour la présentation formulaires et codes de événement et un pour les classes de BLL et accès aux données.
<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
Dans moi depuis l'événement click de mon bouton j'appelle la méthode de ma classe (ReturnFilePath)
J’ai essayé de rajouter la référence de ma classe appelée dans l’assembly de la classe appelante mais il me propose que des .dll… or la classe que je voulais appeler soit type .cs
<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
Quand j’essaye de rajouter une référence (référence => ajouter) pour rajouter ma classe appelée dans l’assembly de la classe appelante il me propose des .DLL,… alors que ma classe est de type .cs
Bonjour
Oui les références sont des DLL, il faut que tu choisisses la DLL generée par ton projet.
Mais dans visual studio; lorsque tu ajout une référence tu as le choix d'ajouter une référence depuis ta solution, visual studio va alors te proposer la liste de tes projets de ta solution générant une DLL referençable, choisi donc celui qui contient ta classe, visual studio fera le reste.
<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
Merci pour ta réponse, en fait j’ai rajouté dans le projet qui contient la classe appelante (publicpartialclass xxx: Form) la référence du projet qui contient la classe appelé (X.Y.CodeBase)