在升级利用Splat的位图功能的Xamarin应用程序时,我们在使用标题中提到的方法时遇到错误:
“IBitmap”不包含“ToNative”的定义,并且找不到接受类型为“IBitmap”的第一个参数的可访问扩展方法“ToNative”(是否缺少using指令或程序集引用?)
为了解决这个问题,我们创建了一个仅适用于安卓系统的示例Xamarin应用程序,并通过NuGet引用了Splat和Splat.Drawing。然后我们添加了对这些方法的调用,并重现了错误:
public void Bar(IBitmap source)
{
Bitmap native = source.ToNative();
IBitmap bitmap = native.FromNative();
}似乎Andriod应用程序可能没有引用Splat库的正确构建。当我在ProcMon中监视包含%USERPROFILE%.nuget\packages\splat的路径时,在构建过程中,我没有看到Visual Studio试图打开/读取.\netstandard2.0目录中的任何文件。
当我在DotPeek中打开netstandard2.0库时,可以看到BitmapMixins类没有包括在内,但它包含在monoandroid90构建中。
我如何在Android项目中获得对Splat的引用来引入Splat的正确构建?
示例项目可以在这里找到:https://github.com/jctlp/SplatBitmap
发布于 2019-11-14 16:46:06
由于您没有扩展方法来帮助处理ToNative和FromNative的位图而导致的错误。
请不要通过直接从NuGet安装Splat来添加引用。将引用添加到Splat的整个项目就可以了。
从下面的链接下载整个Splat项目。https://github.com/reactiveui/splat.git
我创建了一个名为App1的Xamarin.forms应用程序。并在App1.Android中创建Class2.cs类。当我从项目中添加对Splat的引用时。它可以很好地与ToNative和FromNative扩展方法配合使用。
请注意:不要使用Bitmap,请使用Android.Graphics.Drawables.Drawable或var。
public void Bar(IBitmap source)
{
Android.Graphics.Drawables.Drawable native = source.ToNative();//var
IBitmap bitmap = native.FromNative();
}

https://stackoverflow.com/questions/58840777
复制相似问题