我有我從Realtime-Database (Firebase)得到一個wrapper in C# Firebase.XamarinObservable |訂閱只得到改變的對象
private List<Job> jobList = null;
它使用下面的代碼在第一次加載應用程序填充對象的列表:
private async void PopulateList()
{
IReadOnlyCollection<Firebase.Xamarin.Database.FirebaseObject<Job>> items = await firebase
.Child("jobs")
.OnceAsync<Job>();
jobList = new List<Job>();
foreach (var item in items)
{
jobList.Add(
new Job
{
ID = item.Object.ID,
StartDate = item.Object.StartDate,
EndDate = item.Object.EndDate,
Description = item.Object.Description
});
}
SubscribeDbChanges();
}
我想訂閱數據庫來觸發一個事件,並將新的對象更改/添加到列表中,並在後續事件中觸發事件顯示或通知用戶一次,發生更改。爲此我使用的是可觀察即Reactive Rx.Net with All 以下列方式:
private void SubscribeDbChanges()
{
Observable.All<FirebaseEvent<Job>>(
firebase
.Child("jobs")
.AsObservable<Job>(),
job => !jobList
.Contains(job.Object))
.Subscribe(jobItem =>
{
});
}
有沒有一點毛病的代碼?而且,我應該在哪裏創建變更已到達的事件?
先生;在這裏要提到的是,OnceAsync將得到一個IReadOnlyCollection類型的對象,它不會讓我這樣做Select,那麼就可以調用GetEnumerator()。 – Technacron
'IReadOnlyCollection'實現'IEnumerable'。你不看「選擇」的原因是你在「任務」上查找它。我更新了代碼,它確實包含了這個錯誤。但它不會改變可觀察的代碼。 –
謝謝你的答覆先生,是的,我發現包括系統後。linq liabrary它的廣告功能。但仍然無法獲得我期待的適當結果。我設法寫了一個代碼給我預期的結果讓我分享答案 – Technacron