【发布时间】:2016-05-19 19:23:39
【问题描述】:
背景:我正在尝试使用 Firebase 特定平台的 SDK 将 Firebase 集成到我的 MVVMCross 应用中。我的设置的基本部分正在工作,即我可以使用基本的 Firebase 功能从我的视图模型中的 Firebase 数据库中检索信息。它在我的 PCL 中使用了一个接口,该接口在 UI 项目中具有特定于平台的实现。
问题:但是,我想在我的接口(及其实现)中实现一个方法,该方法可以处理 Firebase 的 Java SDK 有一个名为“Firebase”的类的事实返回相同类型(“Firebase”)的方法,例如 Java SDK 中的“Child”方法:
Firebase firebase = new Firebase("URI");
Firebase firebasechild = firebase.Child("test"); // Of same type!
firebasechild.DoStuff();
我正在尝试在我的视图模型中获得类似的功能:
firebase = Mvx.Resolve<IFirebaseConnection> ();
firebase.FirebaseConnection ("URI");
IFirebaseConnection firebasechild = firebase.Child("test");
firebasechild.DoStuff();
我的 PCL 中界面的相关部分是:
public interface IFirebaseConnection
{
void FirebaseConnection (string URI);
IFirebaseConnection Child(string child); // Probably wrong?
void DoStuff();
}
我的 Android UI 项目中的 setup.cs 包含:
Mvx.RegisterType<IFirebaseConnection, FirebaseDroid>();
Android 中特定平台的实现是:
public class FirebaseDroid : IFirebaseConnection
{
protected Firebase firebase;
public void FirebaseConnection (string URI)
{
var mvxTopActivity = Mvx.Resolve<IMvxAndroidCurrentTopActivity>();
Firebase.SetAndroidContext (mvxTopActivity.Activity);
firebase = new Firebase (URI);
}
public IFirebaseConnection Child (string child)
{
return firebase.Child (child); // This is obviously wrong
}
public void DoStuff(){// do something}
}
以上内容显然是错误的,因为firebase.Child() 的类型是“Firebase”而不是“IFirebaseConnection”,或者更准确地说可能是“FirebaseDroid”。在实现特定平台的服务时,有没有办法处理与它所在的类相同类型的方法?
【问题讨论】:
标签: android xamarin firebase mvvmcross