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 :

Serialization d'un PEN


Sujet :

C#

  1. #1
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut Serialization d'un PEN
    Bonjour


    Pour une classe de parametres, j'utilise la serialization automatique
    Malheureusement cette classe contient un parametre Pen qui n'est apparement pas serializable !

    J'ai provisoirement essayé de contourné en utilisant le Tag [field:Nonserializable] mais j'ai toujours une erreur

    Quelle serait la solution ?
    Merci de votre aide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
        [field:NonSerialized]
        private Pen _lgdBorderPen = new Pen(Color.Black);
     
     
        [field: NonSerialized]
        public Pen LgdBorderPen 
        {
          get { return _lgdBorderPen; }
          set { _lgdBorderPen = value; }
        }

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 175
    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 175
    Points : 25 116
    Points
    25 116
    Par défaut
    l'attribut xmlignore sur la propriété je pense

    il est aussi possible de sérialiser ce qui n'est pas sériazable en le transformant en string (via une autre propriété et une classe qui s'occupe de faire la conversion d'un string en pen et réciproquement)

  3. #3
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Salut Sperot

    De toute facon ignorer n'est pas la solution. J'avais essayé pour voir mais sans succes de toute facon.
    Pour le Pen j'ai contourné en mettant Color et Size dans deux parametres différents

    Mais maintenant j'ai le meme problème avec Font et ici j'aimerais quand meme trouver une solution plus elegante


    il est aussi possible de sérialiser ce qui n'est pas sériazable en le transformant en string (via une autre propriété et une classe qui s'occupe de faire la conversion d'un string en pen et réciproquement)

    Il existe bien un Font.Tostring()
    Mais pas un Font.Parse();

    Et meme si cela existait je ne vois pas tres bien comment integrer cela dans un process de serialisation +/- automatique ou je ne dois pas tout ecrire a la main !


    Aujourd'hui je fais simplement ceci pour sauver quelques dizaines de parametres et c'est quand meme bien facile !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
              // *******************************************************************************************
        private void SaveTemplate()
        {
          XmlSerializer xs;
          StreamWriter sw;
          string TemplateFile = "d:/tmp/xxx.xml";
          xs = new XmlSerializer(typeof(C_PrintSettings));
          using (sw = new StreamWriter(TemplateFile, false, Encoding.Default))
          {
            xs.Serialize(sw, Document.PrintSettings);
            sw.Close();
          }
        }

  4. #4
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 175
    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 175
    Points : 25 116
    Points
    25 116
    Par défaut
    moi j'ai été un peu obligé de bricoler, ca fait coder quelques lignes, mais ca fonctionne


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    public class PoliceSerializable
     
    {
      public string FontName;
      public float FontSize;
      public System.Drawing.FontStyle FontStyle;
     
      public System.Drawing.Font GetFont()
      {
        return new System.Drawing.Font(FontName, FontSize, FontStyle, GraphicsUnit.Point);
      }
     
      public static PoliceSerializable GetPolice(System.Drawing.Font f)
      {
        PoliceSerializable p = new PoliceSerializable();
        p.FontName = f.Name;
        p.FontSize = f.Size;
        p.FontStyle = f.Style;
        return p;
      }
    }

    puis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    [System.ComponentModel.Browsable(false)]
    public PoliceSerializable PoliceSerialized {
      get { return PoliceSerializable.GetPolice(this.Police); }
      set { Police = value.GetFont; }
    }
     
    [System.Xml.Serialization.XmlIgnore()]
    public System.Drawing.Font Police {
      get { return Ctrl.Font; }
      set { Ctrl.Font = value; }
    }


    pour les couleurs, je n'ai pas eut besoin de classe, juste une propriété en plus as integer qui fait du toargb ou du fromargb

Discussions similaires

  1. Réponses: 4
    Dernier message: 31/12/2009, 10h27
  2. boost::serialize
    Par Fry dans le forum Bibliothèques
    Réponses: 6
    Dernier message: 05/11/2004, 18h03
  3. type serial : pb
    Par xopos dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 02/09/2004, 09h08
  4. [DB2 V7 & V8] equivalent du type SERIAL
    Par geoffrey_k dans le forum DB2
    Réponses: 3
    Dernier message: 05/07/2004, 14h09
  5. Problème de serialization
    Par bruno270579 dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 30/04/2003, 18h11

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