我有一个针对Android,iOS,UWP和Windows10的Xamarin Forms便携式项目。我想从Portable项目中调用特定的平台代码(UWP,Android,iOS,win10)。谷歌围绕它似乎可以使用Dependency Service完成。 我在调用UWP代码时遇到了一些问题。在本教程之后,我在Portable项目中创建了一个接口,如下所示:
namespace PushClient
{
public interface IWebSocket
{
void test();
}
}
然后在UWP项目中我创建了一个实现接口的类:
[assembly: Xamarin.Forms.Dependency(typeof(PushClient.UWP.WebSocketUWP))]
namespace PushClient.UWP
{
public class WebSocketUWP : IWebSocket
{
public WebSocketUWP() {}
public void test() { System.Diagnostics.Debug.WriteLine("UWP TEST"); }
}
}
然后在UWP项目的App.xaml.cs文件中,我已经注册了依赖项,如下所示:
protected override void OnLaunched(LaunchActivatedEventArgs e)
{
#if DEBUG
if (System.Diagnostics.Debugger.IsAttached)
{
this.DebugSettings.EnableFrameRateCounter = true;
}
#endif
List<Assembly> assembliesToInclude = new List<Assembly>();
assembliesToInclude.Add(typeof(WebSocketUWP).GetTypeInfo().Assembly);
Xamarin.Forms.Forms.Init(e, assembliesToInclude);
Xamarin.Forms.DependencyService.Register<IWebSocket>();
// [...]
}
当我尝试从便携式项目中的共享代码调用UWP测试方法时如此
DependencyService.Get<IWebSocket>().test();
抛出methodNotFoundException。我做错了什么?
答案 0 :(得分:0)
在上面的代码中,错误的部分是在app.xaml.cs中为接口完成注册...这不是必须注册的接口,而是UWP的实现类。
也许这将拯救某人的某一天,某一天,某个地方或其他地方,谁知道......