MonoTouch中使用JSON.Net的奇怪异常

时间:2012-06-04 20:38:05

标签: c# .net json xamarin.ios json.net

我收到与帖子here类似的错误。

我正在像他一样在后台线程上使用JSON.NET解析JSON。它偶尔会因Array.Copy中的错误而失败。

这是一个堆栈跟踪:

System.NullReferenceException: Object reference not set to an instance of an object
  at System.Array.Copy (System.Array sourceArray, Int32 sourceIndex, System.Array destinationArray, Int32 destinationIndex, Int32 length) [0x00104] in /Developer/MonoTouch/Source/mono/mcs/class/corlib/System/Array.cs:979 
  at System.Collections.ArrayList.CopyTo (Int32 index, System.Array array, Int32 arrayIndex, Int32 count) [0x0002d] in /Developer/MonoTouch/Source/mono/mcs/class/corlib/System.Collections/ArrayList.cs:3064 
  at System.Collections.ArrayList.CopyTo (System.Array array, Int32 arrayIndex) [0x00000] in /Developer/MonoTouch/Source/mono/mcs/class/corlib/System.Collections/ArrayList.cs:3046 
  at System.MonoCustomAttrs.GetCustomAttributes (ICustomAttributeProvider obj, System.Type attributeType, Boolean inherit) [0x0026c] in /Developer/MonoTouch/Source/mono/mcs/class/corlib/System/MonoCustomAttrs.cs:259 
  at System.MonoType.GetCustomAttributes (System.Type attributeType, Boolean inherit) [0x00011] in /Developer/MonoTouch/Source/mono/mcs/class/corlib/System/MonoType.cs:582 
  at Newtonsoft.Json.Utilities.ReflectionUtils.GetAttributes[JsonConverterAttribute] (ICustomAttributeProvider attributeProvider, Boolean inherit) [0x00000] in <filename unknown>:0 
  at Newtonsoft.Json.Utilities.ReflectionUtils.GetAttribute[JsonConverterAttribute] (ICustomAttributeProvider attributeProvider, Boolean inherit) [0x00000] in <filename unknown>:0 
  ... Continues ...

以下是JSON.Net中的违规代码:

#if !(NETFX_CORE)
    public static T[] GetAttributes<T>(ICustomAttributeProvider attributeProvider, bool inherit) where T : Attribute
    {
      ValidationUtils.ArgumentNotNull(attributeProvider, "attributeProvider");

      object provider;

#if !PORTABLE
      provider = attributeProvider;
#else

...  omitted junk ...

      if (provider is Type)
        return (T[])((Type)provider).GetCustomAttributes(typeof(T), inherit);

我猜GetCustomAttributes正在返回null。 Xamarin有没有人意识到这个问题?新闻组上的人说他把这项工作放在主线上并修复了它(但我不确定我是否愿意这样做)。

1 个答案:

答案 0 :(得分:2)

这是known bug

它已在5.3.3 alpha版本中修复。