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

C# Discussion :

Serialisation d'une classe avec une method generique


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Par défaut Serialisation d'une classe avec une method generique
    Salut

    J ai une classe que je dois serialiser ; j ai implementer IXmlSerialisable , et cela fonctionne bien ....
    Dans ma classe j ai rajouter une methode generique (La classe n est pas generique) et la il me leve l exception :

    Unable to generate a temporary class (result=1).\r\nerror CS0012: The type 'LS.Net.Calculation.Models.Data.ModelParameter' is defined in an assembly that is not referenced. You must add a reference to assembly '...., Version=0.0.0.999, Culture=neutral, PublicKeyToken=...'.\r\n
    Que puis je faire ?

  2. #2
    Expert confirmé
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par défaut
    Cool, je crois que tu as trouvé un bug dans le framework .NET (je pensais que ça n'arrivais qu'à moi ). Il y a des problèmes avec les Generics et la serialization (ce qui fait que generics+remoting = crise de nerfs). Je suppose que là encore les generics rendent impossible la compilation de la dll de serialization ...

  3. #3
    Membre éprouvé Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Par défaut


    Non cela passe a la compilation; c'est quand j essaie d'instancier XmlSerializer que les problemes arrivent !


  4. #4
    Expert confirmé
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par défaut
    Non c'est toi qui me suis pas

    Le XmlSerializer, invention absolument affreuse lorsque l'on sort de la simple sérialisation du type Person avec le nom et le prénom fonctionne comme ceci :
    Lorsque l'on fait la demande de création d'un XmlSerializer, il génère un fichier .cs temporaire avec le code de serialization/déserialization des types demandés. Ensuite, il appelle CSC.exe pour compiler ce fichier vers une assembly temporaire avec un nom temporaire donc (on peut voir dans les assembly chargées des trucs genre "t45sdsg" qui correspond en fait à une assembly de serialization). Ensuite, il charge donc cette assembly et retourne le XmlSerializer utilisant le serializer généré dans cette assembly.

    Du coup, c'est sujet à plusieurs problèmes :
    - Il y a un deadlock possible dans CSC.exe qui bloque l'application pendant 10mn et qui ensuite génère une exception
    - Si on utilise pas le constructeur par défaut, une assembly est générée à chaque fois que l'on crée le XmlSerializer
    - Créer plusieurs XmlSerializer sur différents threads peut mener à un DeadLock
    - C'est lent
    - Les types complexes foirent dans certains cas, et il y a parfois des problèmes avec les Generics et je pense que c'est ton cas.

  5. #5
    Membre éprouvé Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Par défaut
    Ahhhhhhhhhhh d'accord ...merci pour ces precisions !

    Mais qu'y a t'il, alors, a part XmlSerializer pour faire de la serialisation Xml (mis a part generer le fichier xml soit meme)

  6. #6
    Expert confirmé
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par défaut
    ça tu vois, j'en sais trop rien, j'ai pas trouvé de choses satisfaisantes (me suis juste bricolé des workaround pour les "bugs" que je rencontrais).

    Tu peux peut être essayer les Serializers que l'on trouve sur codeproject :
    http://www.codeproject.com/KB/XML/deepserializer.aspx
    http://69.10.233.10/KB/XML/yaxlib.aspx

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/04/2015, 11h17
  2. [XL-2002] Macro de comparaison d'une cellule d'une feuille avec une cellule d'une autre feuille.
    Par steelydan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2010, 12h59
  3. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  4. Réponses: 9
    Dernier message: 08/07/2009, 17h10
  5. Eval d'une propriété d'une classe dans une classe
    Par bizet dans le forum ASP.NET
    Réponses: 4
    Dernier message: 28/10/2008, 09h43

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