Я пытаюсь написать анонимный метод с целью десериализации Json в DataContract. Это позволит мне иметь что-то повторно используемое без необходимости писать один и тот же код для каждого класса DataContract, который я написал для каждого json-запроса.Анонимный тип в методе десериализации json из строки в DataContract
код у меня есть до сих пор, заключается в следующем:
public T Json2Object<T>(string json, Encoding encoding) {
T result;
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
using (Stream s = new MemoryStream((encoding ?? Encoding.UTF8).GetBytes(json ?? ""))) {
result = ser.ReadObject(s) as T;
}
return result;
}
Это дает мне ошибки в IDE следующим образом:
Как это может быть отрегулирована без Аппаратно кодируя тип так, чтобы он работал так, как я предполагаю?
Очень приятно, спасибо. Если у вас есть 'where T: class', мне нужно заменить class на класс. Например, если мой класс datacontract называется 'Foo', это будет записываться как' where T: Foo' или будет ли '' где T: class' работать, как вы его написали? –
@KraangPrime Nope, 'где T: class' - это именно то, что вам нужно написать. Он ограничивает 'T' ссылочным типом *. Обратите внимание, что вам будет запрещено писать 'Json2Object (someJson, someEncoding)', поскольку 'int' является типом значения. Если вы хотите иметь возможность проходить в 'int', вам нужно использовать подход кастингов. –
Rob
Это потрясающе. Именно то, что мне нужно. Спасибо :) –