Хранение наборов данных в файле RESX - PullRequest
0 голосов
/ 28 марта 2011

Я очень плохо знаком с ресурсами в файлах C # / .Net.

Мне нужно хранить таблицу эксплуатационных данных в файле ресурсов (*.RESX), и я не могу понять, как это сделать.

Если бы я делал это жестко в C, я бы сделал это так:

struct {
   int inputA;
   int outputB;
} dataPoint;

dataPoint myOpsData[] = { { 0,  2000},
                          {10,  4000},
                          {20,  6300},
                          {30,  8400},
                          {40, 10620} };

Самый простой в редакторе Visual Studio 2010 - это Strings, но это толькосопоставляет строку со значением.Если бы я сделал это, мой набор данных выглядел бы примерно так:

Name:       Value:
-----       ------
PerfData1   { 0,  2000}
PerfData2   {10,  4000}
PerfData3   {20,  6300}
PerfData4   {30,  8400}
PerfData5   {40, 10620}

Но этот формат потребовал бы много анализа и связанной проверки и обработки ошибок, которые просто кажутся ненужными.

Какя могу представить массивы точек данных (или даже более сложные типы данных) в файле ресурсов .RESX?

Ответы [ 2 ]

3 голосов
/ 28 марта 2011

Вам не нужно использовать ResX для встраивания статических данных в сборку.

В Visual Studio вы можете просто добавить файл (добавить новый элемент или добавить существующий элемент), изменить действие по созданию (F4 или окно свойств) на «Встроенный ресурс», а затем загрузить его с куском кода, подобного этому (ПРИМЕЧАНИЕ: должен быть в одной сборке, чтобы избежать проблем с безопасностью):

using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("ConsoleApplication1.MyFile.MyExt"))
{
   // load data from stream
}

Я предполагаю, что здесь файл MyFile.MyExt, и этот файл напрямую добавляется в корень проекта, поскольку VS автоматически добавляет пространство имен текущего проекта - здесь ConsoleApplication1 - в путь встроенных ресурсов.

Если вы не уверены в этом пути, я предлагаю вам использовать такой инструмент, как .NET рефлектор, который способен отображать имена встроенных ресурсов и данные из сборки.

Это даст вам экземпляр Stream. Таким образом, вы можете хранить любые данные при условии, что вы можете загрузить / сохранить их из / в экземпляр Stream (MemoryStream, StreamReader, DataSets, сериализованные объекты .NET или Xml, растровые изображения и т. Д.)

1 голос
/ 28 марта 2011

Скорее всего, вам лучше использовать файл app.config.Вы можете использовать раздел AppSettings для добавления строк, которые, очевидно, вам нужно будет проанализировать (аналогично тому, что вы пытаетесь сделать с .RESX).Однако файл app.config позволит вам создавать собственные разделы XML, которые могут лучше соответствовать вашим требованиям.Лучшее в использовании файлов конфигурации - это возможность изменять данные конфигурации без необходимости перестраивать приложение.

http://www.csharpfriends.com/Articles/getArticle.aspx?articleID=45

http://www.codeproject.com/KB/aspnet/ConfigSections.aspx

Кроме того, возьмитепосмотрите на следующую ветку, но вместо страниц у вас будут точки данных:

Пользовательский app.config Обработчик раздела конфигурации

...