Постоянные данные между казнями - PullRequest
0 голосов
/ 13 апреля 2011

У меня есть приложение на C #, которое использует созданную мной DLL, и я должен хранить 3 переменные внутри DLL, которые должны быть постоянными, чтобы я мог получить их позже, даже после того, как пользователь закроет программу (мне нужно получать их при каждом выполнении после того, как я записываю данные в DLL). Я хочу хранить их внутри DLL, потому что я не хочу использовать реестр или использовать какие-либо внешние файлы, поэтому я подумал об использовании файла ресурсов в DLL для чтения / записи моих статических данных.

Может ли кто-нибудь дать мне пример того, как использовать данные ресурса, подобные этому, или предложить другой способ сделать это, не объявляя жестко закодированные переменные (что я не могу сделать), или используя файлы реестра / внешние данные для хранения информации.

Ответы [ 2 ]

2 голосов
/ 13 апреля 2011

Я бы предложил использовать Изолированное хранилище для записи ваших данных. Вы можете иметь быстрый старт здесь .

0 голосов
/ 13 апреля 2011

Использовать обычный файл отображения памяти. Запись в двоичные исполняемые файлы - плохая практика, и многие (если не все) ОС будут запрещать это во всех, кроме самых разнородных настройках политики безопасности.

PS. Популярным термином для этого вида хранения является «база данных» (или база данных программы ). Это должно помочь вам получить несколько хитов Google.

Кроме того, в зависимости от предпочтительного метода реализации вы можете использовать отображение памяти для наложения вашего сегмента данных (чтобы вы могли иметь свой торт и есть его: сохраняйте свои глобальные статические данные там, где они равны и легко записать их на диск). Однако это больше в духе C / C ++.

В .NET вам придется использовать гигантскую структуру пользовательского макета (то есть все ссылочные типы исключены - это более неестественно в C #, чем, скажем, в C ++)

Так что, вероятно, лучше всего использовать UnmanagedMemoryStream, сериализовать ваши данные с помощью встроенного .NET System.Runtime.Serialization (из которых XML-версия на сегодняшний день является наиболее популярной и легко копируется из блогов и других источников).

Приветствия

...