2012-12-11 24 views
26

मुझे हुप्स के माध्यम से कूदना पड़ा है, लेकिन मैंने लगभग को अपने प्रोजेक्ट में Monotouch के साथ आईओएस पर काम करने में कामयाब रहा है। एक क्रम JIT अपवाद बाहर रखा है:एक नेस्टेड जेनेरिक विधि देखने के लिए मोनोटच एओटी कंपाइलर को कैसे बल दें?

System.ExecutionEngineException: Attempting to JIT compile method 'ServiceStack.Text.Json.JsonTypeSerializer:GetWriteFn<int>()' while running with --aot-only. 

अपमानजनक कोड काफी सरल है:

internal WriteObjectDelegate GetWriteFn<T>() 
    { 
     return JsonWriter<T>.WriteFn(); 
    } 

एक परीक्षण के रूप में, मैं आंतरिक तरीके और प्रकार के सार्वजनिक और शामिल करने के लिए एस एस कोड को संशोधित किया मेरे प्रोजेक्ट के स्टार्टअप कोड में निम्नलिखित (वास्तव में कॉल करने के लिए)।

var ick = ServiceStack.Text.Json.JsonWriter<int>.WriteFn(); 
var erk = ServiceStack.Text.Json.JsonTypeSerializer.Instance.GetWriteFn<int>(); 

यह अभी भी किसी कारण से AOT सचेत नहीं है, मैं अपवाद जब कार्यान्वित ऊपर कोड! क्या ऐसा इसलिए है क्योंकि सामान्य पैरामीटर एक मान प्रकार है? या ऐसा इसलिए है क्योंकि ये स्थिर वर्ग और विधियां हैं? मैं मोनोटच को एओटी के ऊपर विधियों को कैसे मजबूर कर सकता हूं?

सवाल में एस एस कोड पर JsonTypeSerializer.cs और JsonWriter.Generic.cs में है: https://github.com/ServiceStack/ServiceStack.Text/tree/master/src/ServiceStack.Text/Json

+0

यह अजीब लग रहा है। क्या आप एक परीक्षण केस के साथ http://bugzilla.xamarin.com पर एक बग फाइल कर सकते हैं? –

+0

एक ही समस्या होने पर, इनट्स की सूची को क्रमबद्ध करने का एकमात्र तरीका यह है: var serializedData = "[" + string.Join (",", Ids.ToArray()) + "]"; –

उत्तर

1

वहाँ कुछ सामान्य limitations monotouch में हैं। मुझे लगता है कि आपको उनमें से एक को अपना कोड देखना चाहिए।

संबंधित मुद्दे