为什么我得到模棱两可的错误
-
21-12-2019 - |
题
在Windows8中它工作正常。当我将其升级到Windows8.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)
{
}
}
}
不隶属于 StackOverflow