C# Firebase 数据库反序列化为对象

问题描述

我正在尝试使用 WatchlistModel 创建一个 observableCollection。我不知道如何从 Stocks 列表(firebase json 格式)到 WatchlistModel (类对象)获取所有内容。我尝试创建一个名为 StocksModel 的新模型并将其添加WatchlistModel 中,但没有结果。唯一有效的是 name 属性,它为我提供了 My Portfolio 值。

我知道我不擅长用英语解释,但请不要抱怨我的语言不好,请向我提问......

谢谢!

这是存储在 firebase 中的内容。我想反序列化 UID 键之后的所有内容

{
  "users" : {
    "udW7NmXadPREbjxl2suJ1555VBC2" : {
      "My Portfolio" : {
        "name" : "My Portfolio","stocks" : {
          "Zaptec" : {
            "avgPrice" : "2,14","name" : "Zaptec","shares" : 121
          }
        }
      }
    }
  }
}

这是我想要存储反序列化的 ObservableCollection:

private ObservableCollection<WatchlistModel> _watchlists;
public ObservableCollection<WatchlistModel> Watchlists
{
    get { return _watchlists; }
    set { _watchlists = value; }
}

这是 FirebaseDatabase.net 创建订阅的方式:

var observable = firebase.Child("users/" + _userService.GetUid()).AsObservable<WatchlistModel>().Subscribe(d =>
{
    App.Current.dispatcher.Invoke((Action)delegate
    {
        if (d.EventType == Firebase.Database.Streaming.FirebaseEventType.InsertOrUpdate)
            Watchlists.Add(d.Object);
        else if (d.EventType == Firebase.Database.Streaming.FirebaseEventType.Delete)
            Watchlists.Remove(d.Object);
        else
            Watchlists.Remove(d.Object);
    });
});

最后是类:

    public class StocksModel : INotifyPropertyChanged
    {
        #region -- Properties --
        private string _name;
        public string Name
        {
            get { return _name; }
            set { _name = value; OnPropertyChanged("Name"); }
        }

        private string _avgPrice;
        public string AvgPrice
        {
            get { return _avgPrice; }
            set { _avgPrice = value; OnPropertyChanged("AvgPrice"); }
        }

        private string _shares;
        public string Shares
        {
            get { return _shares; }
            set { _shares = value; OnPropertyChanged("Shares"); }
        }
        #endregion

        #region -- Constructor --
        public StocksModel()
        {

        }
        #endregion
    }

    public class WatchlistModel : INotifyPropertyChanged
    {

        #region -- Properties --
        private string _name;
        public string Name
        {
            get { return _name; }
            set { _name = value; OnPropertyChanged("Name"); }
        }

        private StocksModel _stocks;
        public StocksModel Stocks
        {
            get { return _stocks; }
            set { _stocks = value; OnPropertyChanged("Stocks"); }
        }

        #endregion

        #region -- Constructor --
        public WatchlistModel(StocksModel stocks)
        {
            Stocks = stocks;
        }
        #endregion

        #region -- Overrides --
        public override string ToString()
        {
            return Name;
        }
        #endregion
    }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)