none
Mapper un bloc de données binaires dans une structure RRS feed

  • Question

  • Bonjour,

    Je cherche une méthode simple pour "mapper" un bloc de données binaires dans une structure.

    En fait, j'ai un fichier qui à une organisation que je modelise par une structure de ce genre :
    class Fichier {
    public uint  Champ1;
    public uint  Champ2;
    public uint  Champn;
    public SousClassNo SubChamp1;
    }

    avec
    class SousClass {
    public uint  Champ1;
    public uint  Champ2;
    }

    Et je voudrais pouvoir simplement charger les données correspondantes à partir du fichier en une seule opération, puis peupler ma class afin de pouvoir accéder aux données par l'intermédiaire de cette structure.

    J'ai actuellement cherché du coté des commandes Interop avec notamment la directive MashalAs et les fonctions du style PtrToStructure. Ca fonctionne presque sauf que le concept de tableau de structure intégré dans une structure ne semble pas fonctionner correctement, il faut donc le gérer manuellement.

    Y a-t-il un moyen de réaliser ce "mapping" simplement sans passer par des commandes Interop?
    Si non, y'a-t-il une solution élégante pour les tableaux de structure?

    Je developpe en C# avec le framework 2.0.

    Merci d'avance pour vos conseils.

    lundi 5 novembre 2007 06:59

Réponses

  • Bon finalement je crois avoir trouvé une solution.

     

    J'ai crée des classes en me basant sur un exemple que j'avais trouvé sur le net, et je croyais me rappeler que struct et class revenaient au même en .Net, mais ce n'est pas le cas du tout. J'ai remplacé les class par des struct et mon code semble marcher correctement à présent.

     

    Par contre j'ai du mal à évaluer le cout en terme de performance de ce genre de conversion. Je cherche à faire un mapping directe qui ne devrait donc pas agir en théorie sur les données.

    J'ai peur que les opérations à base de AllocHGlobal et PtrToStructure fassent des manipulations couteuses en terme de performance.

     

     

    lundi 5 novembre 2007 09:10