首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Xamarin.Forms,无法从特定于平台的项目中到达类。

Xamarin.Forms,无法从特定于平台的项目中到达类。
EN

Stack Overflow用户
提问于 2018-01-26 23:20:14
回答 1查看 593关注 0票数 0

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

这是我的项目结构:

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-27 10:22:38

正如Jason在注释中提到的那样,您不能像那样从特定于平台的中获取代码,因为您没有引用特定于平台的项目,而且有一种叫做DependencyService的东西(杰森也提到过),这将帮助您解决您所拥有的“问题”。

这就是如何在共享代码项目中使用DependencyService,在我的例子中创建一个接口,如下所示:

代码语言:javascript
复制
public interface IDataHandler
{
    string GetSomeStringValue();
}

转到您的iOS或其他特定于平台的项目,并创建新的类DataHandler.cs (您已经拥有了)。它应该实现我们创建的这个接口。就像这样:

代码语言:javascript
复制
[assembly: Dependency(typeof(DataHandler))]
namespace provisioning.ios
{
    public class DataHandler: IDataHandler
    {

        public DataHandler()
        {
        }

        public string GetSomeStringValue()
        {
            return "Some string value or whatever";
        }
    }
}

之后,当您想达到此方法时,您将在您的共享代码项目中使用DepedencyService,如下所示:

代码语言:javascript
复制
private void SomeMethod()
{
    string fromSpecificProject = DependencyService.Get<IDataHandler>().GetSomeStringValue();
}

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

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

强烈建议您查看官方文档这里

此外,我还写了这个关于依赖服务在Xamarin.Forms应用程序中的使用的迷你博客,你可以找到它这里

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48470935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档