moi411
Messages postés179Date d'inscriptionsamedi 22 novembre 2003StatutMembreDernière intervention25 juin 2017
-
12 janv. 2010 à 14:44
moi411
Messages postés179Date d'inscriptionsamedi 22 novembre 2003StatutMembreDernière intervention25 juin 2017
-
13 janv. 2010 à 09:48
Bonjour tout le monde,
J'ai créer une dll avec une fonctions de tri (que je nomme dllTri).
Je passe en paramètre la liste à trier et je récupère la liste triée!
En clair je crée une liste (listeRDV) que je veux trier, remplit d'objets (RDV).
listeRDV et RDV étant des classes bien distincte avec leurs paramètres, leurs fonctions etc.
Dans ma dll je met ma fonctions de tri qui reçoit en paramètre ma listeRDV mélanger et je veux qu'elle renvoie la même liste mais triée. (le paramètre est bien de type listeRDV!)
Pour info, la référence, le using, la génération de la dll... fonctionnent correctement
Mais quand j'exécute mon programme principale, un message me dit qu'il est impossible de convertir implicitement dllTri.listeRDV en Agenda.listeRDV
(dllTri est la dll que je veux pouvoir utiliser dans mon agenda mais aussi partout où je le voudrais!!! Et agenda est mon programme principale).
Si quelqu'un peut m'aider...
Je vous remercie d'avance.
krimog
Messages postés1860Date d'inscriptionlundi 28 novembre 2005StatutMembreDernière intervention14 février 201549 12 janv. 2010 à 18:29
Salut.
Comme dit Lutinore, tes deux listeRDV sont dans des assembly différents. Résultat, ton programme les considèrera comme 2 classes différentes, même si dans le code elles sont parfaitement identiques.
Un moyen très propre de corriger ça est d'utiliser une troisième dll référencée à la fois par ton programme et par ta dll de tri.
Cette dll contient soit ta classe listeRDV (que tu utiliseras dans ton programme et dans ta dll), soit une interface que la classe listeRDV de ton programme implémente.
Cette interface contiendra toutes les méthodes / propriétés que tu utilises dans ta dll de tri (et cette dernière récupèrera un objet correspondant à ton interface, et non ton objet).
Le problème est que tu ne peux pas référencer ta dll dans ton projet si tu références ton projet dans ta dll.
Exemple rapide, dans le cas où tu trierais tes rdv par DateDebut
// Dans ton projet (qui référence ta dllTri et ta dllEntite)
class listeRDV : Entites.IListePerso
{
public DateTime DateDebut { get; set; }
//...
}
// Dans ta dllTri (qui référence ta dllEntite)
class tri
{
public static Entites.IListePerso Trier(Entites.IListePerso liste)
{
//blablabla tu tries en fonction de liste.DateDebut
}
}
// Dans ta dllEntites
namespace Entites
{
public interface IListePerso
{
public DateTime DateDebut { get; set; }
}
}
Krimog : while (!(succeed = try())) ; - Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -