문제

Windows 8에서는 잘 작동했습니다. Windows 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;
}
.

누군가가 나를 도울 수 있습니까?

감사합니다.

도움이 되었습니까?

해결책

전체 네임 스페이스를 사용하여 문제를 해결할 수 있습니다.

  var randomAccessStream = 
     System.IO.WindowsRuntimeStreamExtensions.AsRandomAccessStream(memStream);
.

확장 방법이므로 코드가 보여주는 방식을 호출 할 수 있습니다.

다른 팁

일어나는 일은 하나 이상의 네임 스페이스가 범위에있는 경우 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