Приведение обьекта в элемент класса в C#

405
25 марта 2018, 18:45

Существует json, возвращаемый с сервера. Сервер может выдать в нём абсолютно разные объекты, то есть в одном поле может быть как одно значение, так и один объект, и массив объектов. Я создал класс, примерно такой:

[DataContract]
class CustomResponse
{
    [DataMember]
    object obj;
    [DataMember]
    string timestamp;
}

Ну и думаю: буду приводить к типу из obj

Я использовал простое приведение к типу (Type) Использовал Convert.ChangeType(customResponse.obj, typeof(Type)) Но ничего не получается. Может быть кто-нибудь сталкивался с подобным

Answer 1

Не выйдет.

Type это некоторый "описатель", который несет в себе информацию о конкретном типе. Вы можете его получить вызвав метод GetType у любого объекта или использовав оператор typeof. Сам по себе Type это совершенно отдельный класс, со своими полями, который к данным в obj никакого отношения не имеет.

Вам же нужен конкретный тип к которому вы хотите привести obj, а информации о нем у вас в структуре сообщения нет. И сами определить его вы не можете, так как по вашей задумке, тип в obj может быть разный.

Вам необходимо либо предоставлять метаинформацию о типе, передаваемом в obj в том же сообщении (например имя класса) либо не использовать такую структуру передачи данных.

READ ALSO
C# Переход по формам и их закрытие

C# Переход по формам и их закрытие

В программе существует несколько форм

208
c# windows forms MySql Stored Procedure

c# windows forms MySql Stored Procedure

Как вывести содержимое хранимой процедуры в datagridview ? (параметры не передаются)

171
Фрактальное сжатие изображений C# и C++ [требует правки]

Фрактальное сжатие изображений C# и C++ [требует правки]

Ребзя подскажите кто разбирается в чем я ошибаюсь: по идеи должно быть что клацаешь на кнопку декодирования получается плохо, клацаешь еще...

367
Можно ли конвертировать БД Absolute Database в другие типы?

Можно ли конвертировать БД Absolute Database в другие типы?

Имеется база данных Absolute Database (*abs), содержащая в себе поля типа BLOB(содержит текст)

189