Приведение элементов в массив неизвестных типов с использованием отражения в C # - PullRequest
0 голосов
/ 29 апреля 2011

У меня есть объект Dictionary, в котором Keys имеют тип string, а Values ​​ имеют тип object, потому что они извлекаются из файла, в котором тип данных (для столбца) может отличается.

Dictionary<string, object[]> lfileContent;

Я хотел бы получить тип каждого массива и приведение типа. Конечно, я не могу сделать это, пока они находятся в Словаре, но когда я извлекаю каждое Значение , чтобы использовать их. Например (я использую псевдокод C #, используя логический подход):

ltype = lfileContent["key1"].Value.GetType();
ltype newarray = (ltype) fileContent["key1"].Value;

Я хотел бы задать три вопроса:

1) Когда я получу элементы из файла и сохраню их как объект , сохранят ли они информацию, которую отражение использует для получения своего типа?

2) Если (1) не применяется, я должен использовать отражение, чтобы получить их тип, когда извлекаю их из файла (перед вставкой в ​​словарь object )?

3) Как я могу сделать такое литье с помощью отражения?

Спасибо

Francesco

1 Ответ

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

Вам не нужно Reflection, но объект сохранит информацию о типе.Чтобы привести объект к типу, вы должны указать ему, какой тип во время компиляции, вы можете использовать Reflection для динамического управления объектом, но это отличается от преобразования его как типа.Я бы использовал что-то вроде этого:

string[] stringArray = fileContent["Key1"].Value as string[];
if (stringArray != null) {
    // the object is a string[] type, it is safe to use the stringArray variable
}

// and continue for other types that may be stored in the dictionary
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...