【发布时间】:2016-11-15 11:01:21
【问题描述】:
我正在尝试将 Json 字符串反序列化为对象,在调试模式下它工作正常,但在发布模式下抛出错误,使得 System.RuntimeType 不包含声明属性的定义...
任何帮助将不胜感激
public T DeserializeJSon<T>(string jsonString)
{
dynamic dT = typeof(T);
if (dT.Name.EndsWith("List"))
dT = dT.DeclaredProperties[0].PropertyType.GenericTypeArguments[0];
DataContractJsonSerializerSettings settings = new DataContractJsonSerializerSettings()
{
DateTimeFormat = new DateTimeFormat(DateTimeFormat),
UseSimpleDictionaryFormat = true
};
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T), settings);
MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));
T obj = (T)ser.ReadObject(stream);
stream.Dispose();
return obj;
}
【问题讨论】:
-
你为什么要使用
dyanmic,typeof(T)将总是返回一个System.Type的实例,所以你应该使用类型而不是dynamic。跨度> -
@HimBromBeere 你能说得更具体一些吗?我试过这样 Type dT = typeof(T);但 DeclaredProperties 是一种扩展方法,它会给出错误
标签: c# .net rest xamarin.android json.net