Dll, arguments non valides lors de l'utilisation

Résolu
moi411 Messages postés 179 Date d'inscription samedi 22 novembre 2003 Statut Membre Dernière intervention 25 juin 2017 - 12 janv. 2010 à 14:44
moi411 Messages postés 179 Date d'inscription samedi 22 novembre 2003 Statut Membre Dernière intervention 25 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.

moi

3 réponses

Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
12 janv. 2010 à 16:18
Salut, apparemment tu as 2 listeRDV une déclarée dans dllTri.listeRDV et l'autre dans Agenda.listeRDV.
3
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
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é. -
3
moi411 Messages postés 179 Date d'inscription samedi 22 novembre 2003 Statut Membre Dernière intervention 25 juin 2017 3
13 janv. 2010 à 09:48
Salut,
D'accord j'ai compris... Je savais bien que j'oubliais un détail!!!
Mais en attendant ça marche!
Merci.

moi
0
Rejoignez-nous