首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >允许Firebase Xamarin RealTime流

允许Firebase Xamarin RealTime流
EN

Stack Overflow用户
提问于 2017-03-23 02:00:57
回答 1查看 1.7K关注 0票数 2

我正在与实时Firebase数据库集成在Xamarin内部构建一个跨平台应用程序。我正在使用Firebase C#库FirebaseDatabase.net。在FibrebaseDatabase.net文档中,为了支持实时流(它注意到)调用,例如:

代码语言:javascript
复制
var firebase = new FirebaseClient("https://dinosaur-facts.firebaseio.com/");
var observable = firebase
  .Child("dinosaurs")
  .AsObservable<Dinosaur>()
  .Subscribe(d => Console.WriteLine(d.Key));

但是,为了在Xamarin中实现最大程度的代码重用,我需要在共享项目中调用这一点,而不是在每个独立的iOS和Android应用程序中调用。我认为唯一的方法是同步的,因此不允许从我的防火墙数据库中进行实时监视/更新。

我如何创建和调用一个方法来允许在另一个类中对此进行异步侦听?

EN

回答 1

Stack Overflow用户

发布于 2017-04-06 01:23:09

如果这是一个特定于平台的API,则必须在各个应用程序项目中进行这些调用,但是可以使用DependencyService (如果使用Xamarin.Forms)从共享代码中启动对平台特定代码的调用。如果不使用Xamarin.Forms,则需要使用控制反转库进行依赖注入。

从上述链接:

Xamarin.Forms应用程序需要三个组件才能使用DependencyService: 接口-所需的功能由共享代码中的接口定义。 实现每个平台-实现接口的类必须添加到每个平台项目。 注册-每个实现类必须通过元数据属性向DependencyService注册。注册使DependencyService能够找到实现类并在运行时提供它来代替接口。 调用DependencyService -共享代码需要显式调用DependencyService来请求接口的实现。 注意,必须为解决方案中的每个平台项目提供实现。没有实现的平台项目将在运行时失败。

IOW:

  1. 在共享代码中创建一个接口,其中包含将调用的方法,这些方法将运行特定于平台的代码。
  2. 在您的平台特定项目中创建实现步骤1中创建的接口的类,然后使用需要运行的平台特定代码实现接口中的方法。
  3. 接口的每个实现都需要使用带有元数据属性的DependencyService注册。以下代码注册了Windows的实现: 装配: Xamarin.Forms.Dependency (类型(TextToSpeechImplementation))

它放在步骤2中创建的平台特定类的类声明之上。传递给typeof方法的参数是该类的名称。

  1. 一旦为每个平台设置了具有公共接口和实现的项目,使用DependencyService在运行时获得正确的实现: DependencyService.Get().Speak(“来自Xamarin Forms的Hello”);

此调用由您的共享代码和类型参数进行,ITextToSpeech是您在步骤1中创建的接口的名称。

如果您没有使用Xamarin.Forms,请搜索一个倒置控制库,并按照提供的关于如何使用它的文档进行操作。

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

https://stackoverflow.com/questions/42965924

复制
相关文章

相似问题

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