一开始,我有一个多平台项目,在这里我创建了一个传输数据的类,我的问题是,例如,如果我单击Button,应该调用该类中的方法,但我无法访问该方法。
这是我的项目结构:

红色部分是数据处理程序所在的位置,绿色部分是从我获得单击事件并调用该方法的位置。
我希望有人能帮我解决这个问题!
发布于 2018-01-27 10:22:38
正如Jason在注释中提到的那样,您不能像那样从特定于平台的中获取代码,因为您没有引用特定于平台的项目,而且有一种叫做DependencyService的东西(杰森也提到过),这将帮助您解决您所拥有的“问题”。
这就是如何在共享代码项目中使用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应用程序中的使用的迷你博客,你可以找到它这里。
https://stackoverflow.com/questions/48470935
复制相似问题