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