ResourceManager, пытающийся загрузить .resources не .resx файл

Если то, что Вы действительно делаете, управляет самим файлом CSV, ответ Nelson имеет смысл. Однако мое подозрение - то, что CSV является просто артефактом проблемы, которую Вы решаете. В C++, который, вероятно, означает, у Вас есть что-то вроде этого как Ваша модель данных:

struct Customer {
    int id;
    std::string first_name;
    std::string last_name;
    struct {
        std::string street;
        std::string unit;
    } address;
    char state[2];
    int zip;
};

Таким образом, когда Вы работаете с набором данных, имеет смысл иметь std::vector<Customer> или std::set<Customer>.

, Имея это в виду, думают о Вашем CSV, обрабатывающем как две операции:

// if you wanted to go nuts, you could use a forward iterator concept for both of these
class CSVReader {
public:
    CSVReader(const std::string &inputFile);
    bool hasNextLine();
    void readNextLine(std::vector<std::string> &fields);
private:
    /* secrets */
};
class CSVWriter {
public:
    CSVWriter(const std::string &outputFile);
    void writeNextLine(const std::vector<std::string> &fields);
private:
    /* more secrets */
};
void readCustomers(CSVReader &reader, std::vector<Customer> &customers);
void writeCustomers(CSVWriter &writer, const std::vector<Customer> &customers);

Read и пишут единственную строку за один раз, вместо того, чтобы сохранить полное представление в оперативной памяти самого файла. Существует несколько очевидных преимуществ:

  1. Ваши данные представлены в форме, которая имеет смысл для Вашей проблемы (клиенты), а не текущее решение (файлы CSV).
  2. можно тривиально добавить адаптеры для других форматов данных, таких как объемный импорт/экспорт SQL, файлы электронной таблицы Excel/OO, или даже рендеринг HTML <table>.
  3. Ваш объем потребляемой памяти, вероятно, будет меньшим (зависит от родственника sizeof(Customer) по сравнению с числом байтов в единственной строке).
  4. CSVReader и CSVWriter может быть снова использован как основание для модели в оперативной памяти (такой как Nelson) без потери производительности или функциональности. Обратное неверно.
11
задан Randy supports Monica 27 June 2010 в 01:33
поделиться

3 ответа

Я думаю, что вы используете ResourceManager неправильно. См. Это сообщение .

Также обратите внимание, когда вы открываете командную строку Visual Studio и запускаете resgen.exe, он сообщает, что он используется для преобразования файлов ресурсов из одного формата в другой (т.е. resx в ресурсы). Я думаю, вам нужно будет преобразовать ваш файл в ресурсы из resx, а затем загрузить его с помощью resourceManager.

3
ответ дан 3 December 2019 в 04:33
поделиться

Добавьте расширение .resx явно.

Вы также можете используйте автоматически сгенерированный класс и используйте его свойства, если это подходит для вашего проекта.

0
ответ дан 3 December 2019 в 04:33
поделиться

Я не уверен, какую версию .NET Framework вы используете.

Попробуйте изменить способ реализации ResourceManager.

ResourceManager rm = 
     new ResourceManager("Project.Resource", 
                         System.Reflection.Assembly.Load("App_LocalResources"));

Это должно работать.

Это также отображается как статическое свойство автоматически сгенерированного класса .designer.cs конкретного менеджера восстановления.

3
ответ дан 3 December 2019 в 04:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: