0
背景:我試圖使用其平臺的具體SDK對火力地堡融入我MVVMCross應用程序。我的設置的基本部分正在工作,即我可以使用基本Firebase功能從我的viewmodel中從Firebase數據庫中檢索信息。它在我的PCL中使用一個接口,在UI項目中具有特定於平臺的實現。有方法,它返回同一個類的實例MVVMCross平臺特定的類
問題:我想,但是,實現我的接口中的方法(和它的實現),可以處理的事實,火力地堡的Java SDK中有一個名爲「火力地堡」有返回的方法類同一類型(「火力地堡」),如在Java SDK中的「兒童」的方法:
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>();
在安卓平臺具體實現是:
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」。有沒有辦法處理與實現特定於平臺的服務時類相同類型的方法?