![](/img/trans.png)
[英]Xamarin.forms cannot convert from object to system.type with Xamarin.Auth and specific android platform
[英]Xamarin.Forms, cannot reach class from platform specific projects
正如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.