উইন্ডোজ ফোনে প্রতিক্রিয়াশীল এক্সটেনশনগুলি বাগ


114

VS 2012প্রকল্পের ধরণের সাথে সংকলিত , ডিবাগারটি WP 8.0সংযুক্ত না করা থাকলে নিম্নলিখিত কোডটি ব্যর্থ হবে।

একরকম, যদি ডিবাগারটি সংযুক্ত না থাকে তবে সংকলক অপ্টিমাইজেশনগুলি কোডটির ভিতরে নষ্ট করে দেয় Crash()- কোডে মন্তব্যগুলি দেখুন।

লুমিয়া 1520 (8.1) এবং লুমিয়া 630 (8.0) এ পরীক্ষিত ।

কোন ধারণা কেন এটি ঘটছে?

public partial class MainPage : PhoneApplicationPage
{
    public MainPage()
    {
        InitializeComponent();
        Button.Tap += (sender, args) => new A<B, string>(new B(), "string").Crash();
    }
}
public class B
{
    public void Foo<T>(T val) { }
}
public class A<T1, T2> where T1 : B
{
    private T1 _t1;
    private T2 _t2;
    public A(T1 t1, T2 t2)
    {
        _t2 = t2;
        _t1 = t1;
    }
    public void Crash()
    {
        var obs = Observable.Return(_t2);
        obs.Subscribe(result =>
        {
            //CLR is expecting T2 to be System.String here,
            //but somehow, after passing through Observable
            //T2 here is not a string, it's A<T1, T2>

            new List<T2>().Add(result);
        });
        //Will run normally if commented
        _t1.Foo(new object());
    }
}

6
কোনও সংকলক বাগের মতো মনে হয়, কোনও আরএক্স বাগ নয়। উত্পন্ন আইএল পরীক্ষা করার জন্য আপনি কি আইএলএসপি বা। নেট প্রতিবিম্বকে ব্যবহার করার চেষ্টা করেছেন?
ব্র্যান্ডন

8
আমি Observable.Return<T2>(_t2);এখানে টাইপটি ঠিক করার জন্য এটি সংকলকটির কাছে রেখে দিয়ে ব্যবহার করার চেষ্টা করব । সেই সাথে একটি বাগ থাকতে পারে। মঞ্জুর, এটি একটি দীর্ঘ শট।
cwharris

6
উইন্ডোজ ফোনে আরএক্সের সাথে আমার প্রচুর সমস্যা হয়েছিল। আমার জন্য, এটি সংকলন করবে, তারপরে একটি নিক্ষেপ করুন MethodNotFoundExceptionযখন আমি আসলে ধারণক্ষম শ্রেণিকে কল করার চেষ্টা করেছি। আমার জন্য, ভিএস আপডেট 2 এর প্রকাশ সংস্করণে আপগ্রেড করার কাজ হয়েছে। আসলে কী কী ছিল তা আমার এখনও ধারণা নেই তবে আপনি নিশ্চিত হয়ে নিন যে আপনি সব কিছুর সর্বশেষ আপডেট ব্যবহার করছেন। স্পষ্টতই আমাদের সমস্যাগুলি কিছুটা আলাদা তবে এটি কিছু দিকনির্দেশনা leণ দিতে পারে।
ম্যাথু হগেন

5
প্রশ্নটি কী - 'কোনও ধারণা?' - আপনি কীভাবে এটি ক্র্যাশ হওয়া বন্ধ করার জন্য কীভাবে জানতে চান তা জানতে চান?
টিম লাভল-স্মিথ

1
হতে পারে কারণ _t1.Foo <এখানে প্রকারের অনুপস্থিত> (এবং এখানেও);
আকবর আলি

উত্তর:


1
 _t1.Foo<type>(type);

আপনি প্রকারের ঘোষণাটি মিস করছেন। সংকলক অনুমান করছেন (এবং ভুল অনুমান করছেন)। কঠোরভাবে সবকিছু টাইপ করুন এবং এটি চালানো উচিত।


এটি কোনও সূত্র নয়, আপনি নিজের দ্বারা আইওবার্ভার এবং আইওবসারেবল প্রয়োগ করতে পারেন এবং সবকিছু ঠিকঠাক কাজ করবে।
ইউরি নাইডনভ

দেখে মনে হচ্ছে ডিবাগারটি সংকলকটির সাথে একটি সংযোগ তৈরি করছে, এবং ডিবাগারের পাশাপাশি সমস্ত ভার্সও কঠোরভাবে টাইপ করা দরকার। ডিবাগারটি সঠিক অনুমান করছে এবং সংকলকটি কোনওরকমে এটি থেকে অনুসন্ধান নিচ্ছে। ডিবাগার সমস্যা সমাধান করে কেন এটি সত্যিকার অর্থে গুরুত্বপূর্ণ নয়, মূল কারণটি পাওয়া গেছে।
জাপেস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.