![](/img/trans.png)
[英]Xamarin.Forms: Android <Entry> and dependency service?
[英]Xamarin.Forms Dependency Service UWP: methodNotFoundException
我有一個針對Android,iOS,UWP和Windows10的Xamarin Forms Portable項目。 我想從Portable項目中調用特定的平台代碼(UWP,Android,iOS,win10)。 谷歌圍繞它似乎可以使用依賴服務完成。 我在調用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>();
// [...]
}
當我嘗試從Portable項目中的共享代碼調用UWP測試方法時,如此
DependencyService.Get<IWebSocket>().test();
拋出methodNotFoundException。 我究竟做錯了什么?
在問題之后有點長,但答案可能仍然對某人感興趣..在UWP中你必須進行2次注冊,一次像其他具有匯編屬性的平台,還有另一個在app.xaml中“手動”的.cs。
在上面的代碼中,錯誤的部分是在app.xaml.cs中為接口完成注冊...這不是必須注冊的接口,而是UWP的實現類。
也許這將拯救某人的某一天,某一天,某個地方或其他地方,誰知道......
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.