Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 允许Firebase Xamarin实时流媒体_C#_.net_Firebase_Xamarin_Firebase Realtime Database - Fatal编程技术网

C# 允许Firebase Xamarin实时流媒体

C# 允许Firebase Xamarin实时流媒体,c#,.net,firebase,xamarin,firebase-realtime-database,C#,.net,Firebase,Xamarin,Firebase Realtime Database,我正在Xamarin中通过实时Firebase数据库集成构建一个跨平台应用程序。我在用电脑。在Fibrebase.net文档中,要启用实时流式it notes调用,例如: var firebase = new FirebaseClient("https://dinosaur-facts.firebaseio.com/"); var observable = firebase .Child("dinosaurs") .AsObservable<Dinosaur>() .Su

我正在Xamarin中通过实时Firebase数据库集成构建一个跨平台应用程序。我在用电脑。在Fibrebase.net文档中,要启用实时流式it notes调用,例如:

var firebase = new FirebaseClient("https://dinosaur-facts.firebaseio.com/");
var observable = firebase
  .Child("dinosaurs")
  .AsObservable<Dinosaur>()
  .Subscribe(d => Console.WriteLine(d.Key));
var firebase=新的FirebaseClient(“https://dinosaur-facts.firebaseio.com/");
var可观测=火基
.儿童(“恐龙”)
.AsObservable()
.Subscribe(d=>Console.WriteLine(d.Key));
然而,为了在Xamarin中实现最大限度的代码重用,我需要在共享项目中调用它,而不是在每个独立的iOS和Android应用程序中调用它。我能想到的唯一方法是同步,因此不允许从我的firebase数据库进行实时监视/更新


我如何创建和调用一个方法,以允许从另一个类中异步侦听此可观察对象?

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

从以上链接:

Xamarin.Forms应用程序需要三个组件才能使用DependencyService:

接口–所需的功能由共享代码中的接口定义

每个平台的实现–实现接口的类必须添加到每个平台项目中

注册–每个实现类必须通过元数据属性向DependencyService注册。注册使DependencyService能够找到实现类,并在运行时提供它来代替接口

调用DependencyService–共享代码需要显式调用DependencyService来请求接口的实现

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

IOW:

  • 在共享代码中创建一个接口,该接口包含将运行平台特定代码的方法

  • 在平台特定的项目中创建实现步骤1中创建的接口的类。然后使用需要运行的平台特定代码在接口中实现方法

  • 接口的每个实现都需要使用元数据属性向DependencyService注册。以下代码注册了Windows Phone的实现:

    [assembly: Xamarin.Forms.Dependency (typeof (TextToSpeechImplementation))]
    
  • 这位于步骤2中创建的平台特定类中的类声明之上。传递给
    typeof
    方法的参数是该类的名称

  • 在为每个平台设置了公共接口和实现后,使用DependencyService在运行时获得正确的实现:

    DependencyService.Get<ITextToSpeech>().Speak("Hello from Xamarin Forms");
    
    DependencyService.Get().Speak(“来自Xamarin表单的你好”);
    
  • 此调用由共享代码进行,类型参数,
    ITextToSpeech
    是在步骤1中创建的接口的名称

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