2011-04-13 6 views
0

J'ai une application C# qui utilise une DLL que j'ai faite et je dois stocker 3 variables dans la DLL qui doivent être constantes afin que je puisse les obtenir plus tard, même après que l'utilisateur ferme le programme (je dois obtenez-leur chaque exécution après que j'écrive les données à la DLL). Je veux les stocker dans la DLL parce que je ne veux pas utiliser le registre ou utiliser des fichiers externes donc je pensais utiliser un fichier de ressources dans la DLL pour lire/écrire mes données statiques. Quelqu'un peut-il me donner un exemple de comment utiliser les données de ressources comme ceci ou suggérer une autre façon de le faire sans déclarer les variables codées en dur (que je ne peux pas faire), ou utiliser les fichiers de registre/externes pour stocker l'information.Constantes données entre les exécutions

Répondre

0

Utilisez un fichier mappé en mémoire standard. L'écriture dans des exécutables binaires est une mauvaise pratique et de nombreux systèmes d'exploitation (sinon tous) interdiront cela dans tous les paramètres de politique de sécurité, sauf les plus respectueux.

PS. Le terme populaire pour ce type de stockage est «base de données» (ou base de données du programme). Cela devrait vous aider à obtenir quelques hits google. En outre, en fonction de votre méthode d'implémentation préférée, vous pouvez utiliser le mappage de mémoire pour superposer votre segment de données (vous pouvez ainsi avoir votre gâteau et le manger: gardez les données statiques globales où elles sont et sur le disque). Cependant, c'est plus dans l'esprit C/C++.

Dans .NET, vous devriez utiliser un struct géant mise en page personnalisée (ce qui signifie, tous les types de référence sont hors de question - ce qui est plus naturel en C# que dans, disons, C++)

Donc, votre meilleur pari est probablement d'utiliser un UnmanagedMemoryStream, sérialiser vos données en utilisant .NET System.Runtime.Serialization (dont la saveur XML est de loin la plus populaire et facilement copiée à partir de blogs et d'autres sources).

Vive

2

Je suggère d'utiliser Isolated storage pour écrire vos données. Vous pouvez avoir un démarrage rapide here.

+0

Woah - bonne trouvaille! J'adore SO pour ce genre de pointeur. (_J'ai le sentiment que je resterais loin de ça très franchement, mais c'est moi qui écris du code portable, je suppose.) – sehe

Questions connexes