Liste typée via com4j , java - c# [Résolu]

marcela2804 4 Messages postés mardi 18 août 2009Date d'inscription 23 octobre 2009 Dernière intervention - 23 oct. 2009 à 10:49 - Dernière réponse : Arto_8000 1051 Messages postés lundi 7 mars 2005Date d'inscription 13 juillet 2010 Dernière intervention
- 24 oct. 2009 à 02:01
Bonjour,
voilà le problème, je génère avec Com4j d'un fichier projet.tlb des interfaces Java qui me permettent d'utiliser ma projet.dll en .Net depuis Java.
Cependant les listes typées, List ou IList<t> de mes classes .Net, ne sont pas reconnues pas Com4j!

(Si je défini des Listes non typées, alors ce sont des listes d'object que je reçois, et le Cast coté appli java ensuite est impossible...)

Voilou, une aide serait la bienvenue, je stop sur ça depuis super longtemps!!!
Merci
M
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
Arto_8000 1051 Messages postés lundi 7 mars 2005Date d'inscription 13 juillet 2010 Dernière intervention - 23 oct. 2009 à 15:26
3
Merci
Tu ne peux pas casté un List d'objet en une liste d'un autre type, mais rien ne t'empêche de garder ta liste comme elle est et de faire seulement le cast quand tu vas récupérer un élément de ta liste.

List<Object> lst = ...;
ICard card = (ICard) lst.get(0);

Merci Arto_8000 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 83 internautes ce mois-ci

Commenter la réponse de Arto_8000
Meilleure réponse
marcela2804 4 Messages postés mardi 18 août 2009Date d'inscription 23 octobre 2009 Dernière intervention - 23 oct. 2009 à 17:16
3
Merci
Merci pour ta réponse Arto_8000,
je suis d'accord avec toi, mais y a un petit souci,

en propriété de ma classe c# : List<Object> n'est pas reconnu par tlbimp (utilisé par com4j) lors de la génération des .java

seulement IList est reconnue, et j'obtiens en java des ComObject,

System.out.println(person10.account().cards().item(0))

output : "ComObject : 38ffd30"

Je pense que c'est un objet dérivé de la class com4j.Wrapper, et le Cast genre (Icard) object, ne fonctionne pas...

Verrais tu une autre piste???

Merci marcela2804 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 83 internautes ce mois-ci

Commenter la réponse de marcela2804
Meilleure réponse
Arto_8000 1051 Messages postés lundi 7 mars 2005Date d'inscription 13 juillet 2010 Dernière intervention - 24 oct. 2009 à 02:01
3
Merci
À la limite ce qui peut envisager comme solution c'est de carrément refaire ta liste à partir de l'autre. Tu aurais alors à utiliser les méthodes qui sont présentes dans tes classes de liste pour avoir accès à la liste et la reconstruire dans un autre objet.

En gros, tu ferais quelque chose comme ça :

List<Object> lstList = ...
IList<Object> lstIList = new IList<Object>();

Iterator<Object> it = lstList.iterator();
while (it.hasNext()) {
     lstIList.add(it.next()):
}


Et le principe inverse s'appliquerait pour le retransposer en un objet List. C'est pas tout à fait l'idéal comme solution, mais ça devrait fonctionner.

Merci Arto_8000 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 83 internautes ce mois-ci

Commenter la réponse de Arto_8000

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.