簡體   English   中英

Xamarin.Forms,無法從特定於平台的項目中上課

[英]Xamarin.Forms, cannot reach class from platform specific projects

最初,我有一個多平台項目,在其中創建了一個用於傳輸數據的類,而我的問題是,例如,如果單擊按鈕,則應調用該類中的方法,但無法訪問該方法。

這是我的項目結構: 在此處輸入圖片說明

紅色部分是數據處理程序所在的位置,綠色部分是我獲得clicked事件並調用該方法的位置。

我希望有人可以幫助我解決這個問題!

正如Jason在評論中提到的那樣,您不能像這樣從平台特定的地方訪問代碼,因為您沒有引用平台特定的項目,並且有一個名為DependencyService東西(Jason也提到了),它將幫助您解決此“問題”你有。

這是您可以在共享代碼項目內使用DependencyService ,在我的情況下,創建一個接口是:

public interface IDataHandler
{
    string GetSomeStringValue();
}

轉到您的iOS或其他特定於平台的項目,並創建新的類DataHandler.cs(您已經擁有)。 並且它應該實現我們創建的該接口。 像這樣:

[assembly: Dependency(typeof(DataHandler))]
namespace provisioning.ios
{
    public class DataHandler: IDataHandler
    {

        public DataHandler()
        {
        }

        public string GetSomeStringValue()
        {
            return "Some string value or whatever";
        }
    }
}

之后,當您想使用此方法時,將在共享代碼項目內部使用DepedencyService,如下所示:

private void SomeMethod()
{
    string fromSpecificProject = DependencyService.Get<IDataHandler>().GetSomeStringValue();
}

如果您想要或需要,可以使用它向平台特定項目傳遞一些值,並像我在這個迷你示例中所做的那樣返回數據。

請注意,必須為解決方案中的每個平台項目提供實現。 沒有實現的平台項目將在運行時失敗!

強烈建議您在此處查看官方文檔。

我也做了一個關於Xamarin.Forms應用程序中Dependency Service用法的微型博客文章,您可以在這里找到。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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