سؤال

في ويندوز 8 عملت بشكل جيد.عندما كنت ترقية إلى ويندوز 8.1 حصلت على خطأ:

Error   1   The call is ambiguous between the following methods or properties: 'System.IO.WindowsRuntimeStreamExtensions.AsRandomAccessStream(System.IO.Stream)' and 'EventHandler.UI.Extensions.StreamExtensions.AsRandomAccessStream(System.IO.Stream)'...

هنا هو طريقتي التي تحصل على الخطأ:

public BitmapImage ConvertByteArrayToBitMapImage(byte[] imageByteArray)
{
    BitmapImage bitmapImg = new BitmapImage();
    MemoryStream memStream = new MemoryStream(imageByteArray);

    var randomAccessStream = memStream.AsRandomAccessStream(); //This line has error.
    bitmapImg.SetSourceAsync(randomAccessStream);

    return bitmapImg;
}

يمكن للشخص مساعدتي?

شكرا.

هل كانت مفيدة؟

المحلول

يمكنك حل مشكلتك باستخدام مساحة الاسم الكامل:

giveacodicetagpre.

كما هي طريقة تمديد، يمكنك الاتصال به طريقة عرض التعليمات البرمجية.

نصائح أخرى

ما يجري هو ذلك AsRandomAccessStream موجود في أكثر من مساحة اسم واحدة في النطاق .المترجم لا يمكن أن تعرف أي واحد كنت في اشارة الى.لديك خياران:

  • قم بإزالة مساحة الاسم التي لا تحتاج إليها والتي تحتوي أيضا على AsRandomAccessStream
  • حدد المسار الكامل إلى AsRandomAccessStream مثل System.IO.WindowsRuntimeStreamExtensions.AsRandomAccessStream

تخميني هو أن EventHandler.UI.Extensions.StreamExtensions.AsRandomAccessStream ربما تمت إضافته بواسطة التحديث و System.IO.WindowsRuntimeStreamExtensions.AsRandomAccessStream هو واحد كنت تستخدم بالفعل.

AsRandomAccessStream هي طريقة تمديد ، ولا يمكنك ذلك المصبوب طريقة لبعض مساحة الاسم.لذلك لا يمكنك فعل شيء مثل object.ExtensionMethod() from MyNameSpace.ExtensionMethods أو هكذا, بقدر ما أعرف...إذا كان ذلك ممكنا بالفعل ، أود أن أعرف نفسي!لذلك يمكنك فقط استدعاء طريقة الامتداد هذه مثل أي طريقة فئة ثابتة عادية أخرى.

رمز المثال الصغير لا يضر أبدا:

    using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Example NewExample = new Example();
            //NewExample.DoSomething(); //Ambiguous error
            ExtensionClass1.DoSomething(NewExample); //OK
        }
    }

    public class Example
    {

    }

    public static class ExtensionClass1
    {
        public static void DoSomething(this Example A)
        {
        }
    }

    public static class ExtensionClass2
    {
        public static void DoSomething(this Example A)
        {
        }
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top