Xamarin.Forms,无法从平台特定项目到达类

时间:2018-01-26 23:20:15

标签: c# xamarin xamarin.forms

起初我有一个多平台项目,我在其中创建了一个传输数据的类,我的问题就是如果我单击一个Button,应该调用此类中的方法,但是我无法访问该方法。

这是我的项目结构: enter image description here

红色部分是数据处理程序所在的位置 从我获得点击事件的绿色部分并调用方法。

我希望有人可以帮我解决这个问题!

1 个答案:

答案 0 :(得分:0)

正如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();
}

如果您需要或者需要,您可以使用它将一些值传递给特定于平台的项目并返回数据,就像我这样做这个小例子一样。

  

请注意,必须为每个平台项目提供实现   在你的解决方案没有实现的平台项目将失败   在运行时!

强烈建议您查看官方文档here

此外,我制作了这个关于在Xamarin.Forms应用程序中使用Dependency Service的迷你博文,你可以找到它here