起初我有一个多平台项目,我在其中创建了一个传输数据的类,我的问题就是如果我单击一个Button,应该调用此类中的方法,但是我无法访问该方法。
红色部分是数据处理程序所在的位置 从我获得点击事件的绿色部分并调用方法。
我希望有人可以帮我解决这个问题!
答案 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。