IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Interfaces et conversions d'objets


Sujet :

VB.NET

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Points : 377
    Points
    377
    Par défaut Interfaces et conversions d'objets
    Bonjour à tous,

    On est en train de se casser la tete avec deux collègues pour mettre en place un truc sympa et pratique sur l'appli que nous développons mais on bloque sur quelque chose.

    Imaginons un projet "Library"
    Il contient une interface qui sera donc mon contrat exposé au reste du monde.
    Il contient également un objet implémentant cette interfaces. Par contre, cet objet n'est pas exposé au reste du monde.
    Il contient enfin une classe exposant une fonction qui permet de retourner un objet typé IQuelquechose (donc mon interface). Le return renvoie une instance de ma classe mais le type du retour de fonction est bien mon interface.

    Maintenant, je suis dans un projet Lambda qui référence ce projet Library.
    Dans ce projet lambda, je créé une classe model qui implémente l'interface.
    Je fais appel à la fonction de la classe me retournant mon IQuelquechose et j'essaye d'assigner ce résultat dans une variable typé mon model (qui implémente IQuelquechose) mais cela ne fonctionne pas.

    Auriez vous une idée qui permettrai de caster, de convertir le résultat de ma fonction qui est un IQuelquechose (mais qui est encapsulé dans ma classe de mon projet Library) vers mon type model qui implémente lui aussi mon interface ?

    On retourne le problème dans tous les sens et cette problématique est vraiment importante pour nous.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par zax-tfh Voir le message
    Auriez vous une idée qui permettrai de caster, de convertir le résultat de ma fonction qui est un IQuelquechose (mais qui est encapsulé dans ma classe de mon projet Library) vers mon type model qui implémente lui aussi mon interface ?
    Ce n'est pas possible.

    Si A et B sont des classes implémentant un interface I et que que A et B n'ont aucuns liens de parenté (je veux dire A dérive de B ou inversement) alors il est impossible à partir de B d'avoir un objet A même si les deux classes se trouvent dans la même librairie (donc out le fait qu'elles ne partagent pas la même librairie ou que l'une des classes n'est pas visible du monde extérieur).

    La seule solution est de passer par un convertisseur (une classe intermédiaire permettant à partir d'une instance de A créer une instance de B et inversement) ce qui n'est pas du tout propre et oblige à ce que toutes les classes soient visibles par toutes les librairies si elles ne sont pas dans une seule et unique librairie

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Points : 377
    Points
    377
    Par défaut
    C'est bien ce que je pensais, merci.
    Après je peux peut etre voir pour me faire un petit convertisseur qui, par reflection, va récupérer chaque property de mon interface et pour chacune d'entre elle transferer la valeur de A vers B. C'est pas ultra sex non plus mais ça a le mérite d'etre automatique et niveau perfs, s'il y a maxi 30 property c'est le bout du monde... donc le probleme ne se posera pas. Qu'en penses tu ?

  4. #4
    Invité
    Invité(e)
    Par défaut
    C'est aussi une solution et elle t'évite grâce à la réflexion d'exposer la classe A (confère mon précédent post). Sinon je suis fan d'aucune de ces deux solutions

  5. #5
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    si tu as une interface ca devrait te suffire, si tu veux faire une 2ème classe qui implémente ton interface il faudrait nous donner la raison

    après si tu veux que ton factory (c'est comme ca qu'on appelle un truc qui retourne une nouvelle instance) retourne une instance de ta 2ème classe plutot que la classe qui est dans la dll c'est possible aussi, même sans référence, il faut faire un mécanisme de "registration de classe"
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Points : 377
    Points
    377
    Par défaut
    En fait, le but de la manoeuvre serait de mettre à disposition une brique logique avec ses factory et ses interfaces.
    A charge aux appelant de créer leurs propres classes implémentant ces interfaces.

    Quel est le but de cette manoeuvre ?

    Dans une équipe de devs, on est amenés, entre "secteurs logiciels" (donc entre différents produits), à faire appel à des briques logicielles communes. Néanmoins, l'utilisation directe de classes qui seraient exposées par la brique commune pose problème selon les frameworks employés.
    En effet, dans le cas d'un site ASP MVC, on va avoir besoin de dataannotations pour valider les données par exemple.
    Dans le cas de Silverlight, on va devoir ajouter la notion de PropertyChanged dans le setter de la property. D'où la nécessité de faire créer leurs propres classes à ceux qui utilisent cette brique logicielle.

    Donc une brique hermetique avec juste des interfaces et des factory
    Un ou plusieurs "appelants" qui vont créer leurs propres classes implémentant les interfaces et les décorant ensuite avec des mécanismes propres au framework utilisé (j'espere que mon explication est assez claire )

  7. #7
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    dans ta dll avec les interfaces tu veux faire une fonction à laquelle on passe un type de classe (et éventuellement un type pour l'interface bien que ca puisse se deviner)
    le factory ira alors lire ce qui a été iniatialisé pour savoir quel type doit etre retourné
    il suffit alors de faire un truc du genre return activator.Createinstance(letype)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  8. #8
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    dans ta dll avec les interfaces tu veux faire une fonction à laquelle on passe un type de classe (et éventuellement un type pour l'interface bien que ca puisse se deviner)
    le factory ira alors lire ce qui a été iniatialisé pour savoir quel type doit etre retourné
    il suffit alors de faire un truc du genre return activator.Createinstance(letype)
    Peut-être que j'ai lu son problème à l'envers. Le problème de zax-tfh se résume tout simplement à ça et nom à la façon de créer des instances de classes :

    Si A et B sont deux classes qui implémentent toutes les deux un interface I alors est-ce qu'une instance de A peut être considérée comme une instance de B ?
    Ma réponse à cette question est dans mon précédent commentaire. Peut-être les histoires de Factory que tu soulèves viennent à améliorer les solutions proposées précédemment.

  9. #9
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Points : 2 927
    Points
    2 927
    Par défaut
    Il me semble qu'il y a là un problème de conception.

    Lorsque l'on manipule des interfaces, c'est qu'on ne veut pas dépendre d'une implémentation en particulier. Pourtant, c'est le cas de la fonction qui retourne une "instance de type IQuelqueChose"

    Pourquoi l'objet implémentant l'interface dans le projet Library n'est pas visible de l'extérieur ?

    A mon avis :
    - C'est dans le projet Lambda que devrait se trouver la fonction qui retourne "instance de type IQuelqueChose" mais en utilisant l'implémentation de IQuelqueChose qui se trouve dans le projet Lambda.
    - L'implémentation du projet Library (celle qui n'est pas visible de l'extérieur) n'a pas de raison d'exister (mais il y a peut être d'autres informations qui je n'ai pas).

    My two cents, comme on dit outre-atlantique...

  10. #10
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    Citation Envoyé par h2s84 Voir le message
    Peut-être que j'ai lu son problème à l'envers. Le problème de zax-tfh se résume tout simplement à ça et nom à la façon de créer des instances de classes
    son problème n'est pas de caster A en B alors que c'est impossible, il cherchait à faire ca un peu au hasard pour répondre à sa problématique
    à savoir, il a une dll avec une interface et peut etre une classe (je pense d'ailleurs que ce n'est pas utile, à moins d'avoir des cas ou la classe de base peut suffire)
    sauf que dans certains projet, ce n'est pas cette classe qu'il veut mais une classe spécifique à la plateforme
    or la dll ne sait actuellement pas quelle classe doit etre instancier via le factory



    d'ailleurs il me vient d'autres solutions que de l'initialisation au démarrage pour définir quelle classe doit être utilisée

    si c'est simple, une interface = une classe, tu peux dans ta dll faire une inspection de l'exe et des dll chargée à la recherche d'une classe implémantant l'interface en question, puis faire du activator.CreateInstance sur le type

    ou encore que le factory prenne 2 paramètres, l'interface et la classe, du coup le factory semble inutile, mais au moins les instances sur l'interface peuvent transiter dans le programme, seuls les créateurs d'instances doivent connaitre la classe à créer
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  11. #11
    Invité
    Invité(e)
    Par défaut
    Voilà je suis d'accords avec les 2 commentaires de dessus Il a un problème de conception c'est sûr

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Points : 377
    Points
    377
    Par défaut
    Oulah
    Problème de conception : certainement, c'est d'ailleurs pour cela que je souhaite revoir ma structure et trouver la solution la plus propre.

    Je vais exliquer ma problématique avec l'exemple :

    J'ai un projet BusinessLayer (qui ne doit pas avoir de référence sur mes autres projets de ma solution) qui contient :
    - CustomerFactory (il est chargé d'aller chercher en base mes infos et me rapatrier ça).
    - Un élément (Interface, classe abstraite, peut importe) qui va servir d'enveloppe à mes données.

    -> J'ai un projet ASP.MVC 4 qui contient un modele MVCCustomer qui doit exposer les mêmes propriétés que ce que me retourne mon factory MAIS sur lequel je dois pouvoir modifier le code de mes property (ajouter des dataannotations par exemple).

    -> J'ai un projet Silverlight avec un Modele SLCustomer qui contient lui aussi les mêmes property MAIS sur lequel je dois pouvoir modifier le code des propriétés pour ajouter un RaisePropertyChanged dans le setter de mes property.

    La question : Comment faire pour rendre la brique BusinessLayer compatible à mes deux projets (ASP.MVC et Silverlight) sans pour autant bouger chacun des éléments cités de leurs projets respectifs (le factory et sa logique métier reste dans la BL, les modeles restent dans les projets ASP et SL) ?

  13. #13
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Points : 2 927
    Points
    2 927
    Par défaut
    Aaaah, les attributs .net : ou comment ajouter du couplage sur des DTO !
    Il me semblait bien qu'il nous manquait des infos

    Peut-être que AutoMapper est la réponse à ta problématique : https://github.com/AutoMapper/AutoMapper

    Par contre, je tique encore sur "l'élément qui va servir d'enveloppe aux données".
    Si j'ai bien suivi, ce pourrait être un DTO (nu de tout attribut .net ), que tu devrais mapper avec MVCCustomer et SLCustomer.
    C'est bien ça ?
    Dans tous les cas, ni une interface, ni une classe abstraite ne peuvent stocker des données.

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Points : 377
    Points
    377
    Par défaut
    Tu as bien saisi le principe skalp et je cherchais à voir s'il y avait des moyens un peu plus "propres" de gérer ce genre de cas (où alors une autre architecture).

    Le but étant de rendre étanche la brique métier et surtout qu'elle soit vraiment dénuée de tout élément exterieur comme les annotations de validation ou alors les raisepropertychanged pour la partie SL ou encore les annotations de datacontract pour les WS. Tous ces cas étant gérés dans les projets propres à chacun.


    En fait, cette recherche est la continuité de l'injection de dépendance.
    En effet, les méthodes et fonctions de ma brique logique peuvent attendre des paramètres. Ces paramètres seront typés As IQuelquechose ce qui fait que la brique se servant de la brique logique va injecter son objet qui implémente l'interface et la brique logique pourra traiter la demande sans se soucier du type de l'objet envoyé en paramètre, à partir du moment où il implémente l'interface. La continuité dont je parle c'est qu'on fait de l'injection de dépendance en entrée mais comment fait-on pour reproduire le même principe en sortie ?

  15. #15
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Points : 2 927
    Points
    2 927
    Par défaut
    Citation Envoyé par zax-tfh Voir le message
    La continuité dont je parle c'est qu'on fait de l'injection de dépendance en entrée mais comment fait-on pour reproduire le même principe en sortie ?
    En entrée et sortie de quoi ? Des fonctions ?
    Peux-tu nous donner un exemple illustrant cette question ?

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Points : 377
    Points
    377
    Par défaut
    Entree sortie des fonctions factory en effet.
    Un exemple :

    Projet BLL :

    Classe PersonFactory

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Public Function GetPersonList(criteres as ICriteresSelectionPerson) as IEnumerableOf(IPerson)
        'Ici je vais chercher en base ma liste d'éléments Person
        dim result as List(Of Person) = myDb.GetListPersons(criteres)
        return result
    End Function
    Friend Class Person : implémente IPerson et expose les propriétés implémentées de IPerson

    Public Interface IPerson : déclare les signatures de quelques propriétés

    Projet MVC.Models

    Public Class PersonModel : : Implémente IPerson et expose les propriétés de IPerson. Possède en plus des annotations de validation propres au projet MVC.
    Public class criteresSelectionPerson : Implémente ICriteresSelectionPerson

    Projet MVC :

    classe PersonController

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Function Index() as Action Result
        dim ListeModels as new List(Of PersonModel)
        dim pFactory as new PersonFactory
        for each Ip as IPerson in pFactory.GetPersonList(new criteresSelectionPerson)
            dim m as new PersonModel
            MonWrapperParReflection.Wrap(Ip, m)
            ListeModels.Add(m)
        Next
        Return View(ListeModels)
    End Function

    Cette méthode de travail permet à n'importe quel projet, que ce soit du mvc, du webservice, du silverlight, d'utiliser cette couche BLL sans pour autant en modifier le contenu car on sépare bien la partie business et ses objets de la partie exploitation du business.

    Maintenant, en reflechissant à ça, il est clair que cela demande beaucoup de travail derriere... Si je me casse autant la tête sur le sujet c'est que nous avons
    - plusieurs projets business différents
    - plusieurs projets les exploitant, tous dans un framework différent (mvc, silverlight...)
    - Nous avons eu des déboires à partager les mêmes objets "Pseudo DTO" entre ces différents exploitants parce que d'une part nous avons des annotations de validation pour le MVC, parce que nous devons utiliser des types bien particuliers (observablecollection pour tout ce qui est liste pour que Silverlight les gère bien alors qu'un MVC n'en a rien à faire), parce que nous avons du ajouter le raisepropertychanged dans chaque setter (pour le silverlight), parce que nous avons les attributs de datacontract (pour la partie webservices), bref, c'est loin d'être l'utilisation optimale de ces projets. J'aimerai que chaque développeur puisse, qu'il soit dans un framework ou dans un autre, se concentrer sur son domaine à lui et qu'il n'ait pas à penser aux autres frameworks.

  17. #17
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Bonjour,

    Citation Envoyé par zax-tfh Voir le message
    ...
    J'ai un projet BusinessLayer (qui ne doit pas avoir de référence sur mes autres projets de ma solution) qui contient :
    - CustomerFactory (il est chargé d'aller chercher en base mes infos et me rapatrier ça).
    - Un élément (Interface, classe abstraite, peut importe) qui va servir d'enveloppe à mes données.

    -> J'ai un projet ASP.MVC 4 qui contient un modele MVCCustomer qui doit exposer les mêmes propriétés que ce que me retourne mon factory MAIS sur lequel je dois pouvoir modifier le code de mes property (ajouter des dataannotations par exemple).

    -> J'ai un projet Silverlight avec un Modele SLCustomer qui contient lui aussi les mêmes property MAIS sur lequel je dois pouvoir modifier le code des propriétés pour ajouter un RaisePropertyChanged dans le setter de mes property.

    La question : Comment faire pour rendre la brique BusinessLayer compatible à mes deux projets (ASP.MVC et Silverlight) sans pour autant bouger chacun des éléments cités de leurs projets respectifs (le factory et sa logique métier reste dans la BL, les modeles restent dans les projets ASP et SL) ?
    et
    Citation Envoyé par zax-tfh Voir le message
    ... J'aimerai que chaque développeur puisse, qu'il soit dans un framework ou dans un autre, se concentrer sur son domaine à lui et qu'il n'ait pas à penser aux autres frameworks.
    Il faut peut-être regarder du coté des génériques pour le factory dans la brique BusinessLayer.


    A+, Hervé.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  18. #18
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Points : 377
    Points
    377
    Par défaut
    Bonjour,

    Merci pour la réponse mais j'ai du mal à voir comment les générique pourraient s'appliquer à ma problématique.
    Serait-il possible d'expliquer un peu à quel niveau ils entreraient en oeuvre ?

    Merci d'avance

  19. #19
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Points : 2 927
    Points
    2 927
    Par défaut
    Oui, effectivement les génériques peuvent répondre au problème !
    Tu pourrais écrire quelque chose comme :

    Code vb.net : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Public Function GetPersonList(Of T As {IPerson, New})(criteres As ICriteresSelectionPerson) As IEnumerable(Of T)
        'Ici je vais chercher en base ma liste d'éléments Person
        Dim result As IEnumerable(Of T) = myDb.GetListPersons(Of T)(criteres)
        Return result
    End Function

    Ainsi, tu injectes l'implémentation de IPerson qui va bien au moment d'appeler la méthode.
    Par exemple, dans le projet MVC :
    Code vb.net : Sélectionner tout - Visualiser dans une fenêtre à part
    pFactory.GetPersonList(Of PersonModel)(new criteresSelectionPerson)

    Plus besoin de mapper !

  20. #20
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Points : 377
    Points
    377
    Par défaut
    Bonjour skalp,

    Cette solution est de loin la plus élégante et la plus excellente !!!! c'est pile ce dont j'avais besoin et cela s'applique vraiment nickel chrome à la problématique que j'avais.
    Juste une petite question au passage : que veut dire le ",new" dans la déclaration générique ? J'ai bien vu que si je le retire je ne peux plus faire de new T with {. [...] } mais je ne comprend pas vraiment ce que cela implique derriere.

    Dans tous les cas, je te remercie beaucoup pour le coup de main, ca débloque un vrai gros probleme !

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Champs SQL Server Binary (image) conversion LINQ-objet image
    Par pierrot2k dans le forum Windows Presentation Foundation
    Réponses: 15
    Dernier message: 05/05/2008, 16h56
  2. conversion des objets
    Par Nayila dans le forum Langage
    Réponses: 7
    Dernier message: 09/01/2008, 09h27
  3. Conversion contenu objet File en variable String
    Par theleek dans le forum JSF
    Réponses: 2
    Dernier message: 20/12/2007, 11h31
  4. Interface graphique "statique" ou "objet" ?
    Par agent007se dans le forum Interfaces Graphiques en Java
    Réponses: 4
    Dernier message: 22/01/2007, 01h16
  5. interface : multi surface et objet
    Par DEVfan dans le forum SDL
    Réponses: 1
    Dernier message: 31/07/2006, 22h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo