Dll, arguments non valides lors de l'utilisation [Résolu]

Signaler
Messages postés
180
Date d'inscription
samedi 22 novembre 2003
Statut
Membre
Dernière intervention
25 juin 2017
-
Messages postés
180
Date d'inscription
samedi 22 novembre 2003
Statut
Membre
Dernière intervention
25 juin 2017
-
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

Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
34
Salut, apparemment tu as 2 listeRDV une déclarée dans dllTri.listeRDV et l'autre dans Agenda.listeRDV.
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
42
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é. -
Messages postés
180
Date d'inscription
samedi 22 novembre 2003
Statut
Membre
Dernière intervention
25 juin 2017
3
Salut,
D'accord j'ai compris... Je savais bien que j'oubliais un détail!!!
Mais en attendant ça marche!
Merci.

moi