我正在与实时Firebase数据库集成在Xamarin内部构建一个跨平台应用程序。我正在使用Firebase C#库FirebaseDatabase.net。在FibrebaseDatabase.net文档中,为了支持实时流(它注意到)调用,例如:
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应用程序中调用。我认为唯一的方法是同步的,因此不允许从我的防火墙数据库中进行实时监视/更新。
我如何创建和调用一个方法来允许在另一个类中对此进行异步侦听?
发布于 2017-04-06 01:23:09
如果这是一个特定于平台的API,则必须在各个应用程序项目中进行这些调用,但是可以使用DependencyService (如果使用Xamarin.Forms)从共享代码中启动对平台特定代码的调用。如果不使用Xamarin.Forms,则需要使用控制反转库进行依赖注入。
从上述链接:
Xamarin.Forms应用程序需要三个组件才能使用DependencyService: 接口-所需的功能由共享代码中的接口定义。 实现每个平台-实现接口的类必须添加到每个平台项目。 注册-每个实现类必须通过元数据属性向DependencyService注册。注册使DependencyService能够找到实现类并在运行时提供它来代替接口。 调用DependencyService -共享代码需要显式调用DependencyService来请求接口的实现。 注意,必须为解决方案中的每个平台项目提供实现。没有实现的平台项目将在运行时失败。
IOW:
它放在步骤2中创建的平台特定类的类声明之上。传递给typeof方法的参数是该类的名称。
此调用由您的共享代码和类型参数进行,ITextToSpeech是您在步骤1中创建的接口的名称。
如果您没有使用Xamarin.Forms,请搜索一个倒置控制库,并按照提供的关于如何使用它的文档进行操作。
https://stackoverflow.com/questions/42965924
复制相似问题