簡體   English   中英

Xamarin.Forms依賴服務UWP:methodNotFoundException

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM