2 votes

modèle de conception pour l'analyse syntaxique d'un objet vers un modèle spécifique et vice versa

J'ai une logique de téléchargement de fichiers et des règles commerciales très spécifiques. Et selon ces règles, je dois analyser mon modèle de fichier en ligne, ce qui ressemble à "Header:{champ1},{champ2},{champ3},{champ4},{champ5},{champ6},{champ7},{champ8} et ainsi de suite pour 19 paramètres" C'est initialement une sérialisation personnalisée.

Et je devrais aussi avoir la possibilité d'analyser cette ligne pour la transformer en objet. Donc, la question est de savoir quelle est l'idée commune pour coder un tel personnel ?

Parce que maintenant, pour analyser le modèle en ligne, j'utilise simplement string.format avec de nombreuses options, et pour analyser la ligne en modèle, je divise la ligne par ',' et ensuite la manipulation avec des parties de l'information l'assigne aux champs du modèle. Mais dans cette mise en œuvre, il y a beaucoup de travail de bas niveau, quelques positions codées en dur et aussi beaucoup de choses qui ne sont pas belles à voir pour moi.

2voto

Tejs Points 23834

Il n'y aura pas de magie ici, d'autant plus que vous sérialisez l'objet dans un format non standard. Vous devrez probablement vous contenter d'un code "laid".

1voto

Bronumski Points 5754

Vous devez placer votre sérialisation/désérialisation dans un sérialiseur personnalisé. Vous pouvez suivre le même modèle que les autres sérialiseurs de la bibliothèque .net et implémenter la fonction IFormatter interface . Vous disposerez ainsi d'une interface commune que vous pourrez utiliser pour diffuser des flux vers et depuis un fichier (ou tout autre flux) :

using (var fileStream = new FileStream(fileName, FileMode.Create))
{
    var formatter = new CustomFormatter();
    formatter.Serialize(fileStream, objectToSerialize);
}

using (var fileStream = new FileStream(fileName, FileMode.Read))
{
    var formatter = new CustomFormatter();
    return (CustomType)formatter.DeSerialize(fileStream);
}

Vous pouvez voir un exemple de formateur personnalisé dans ce téléchargement

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X