public PlayerDataModel(IPlayerDataSavingService playerDataSavingService)
        {
            _playerDataSavingService = playerDataSavingService;

            PropertyValueChanged += (propertyName, previousValue, currentValue) =>
            {
                Debug.Log($"{GetType().Name}.{propertyName} changed from {previousValue} to {currentValue}");

                var propertyInfo = GetType().GetProperty(propertyName);
                _playerDataSavingService.Save(propertyInfo, this);
            };
        }
        public void Construct(IPlayerDataSavingService playerDataSavingService)
        {
            Debug.Log($"{GetType().Name} initialization started");

            PlayerDataModel = new ReactiveProperty <PlayerDataModel>
            {
                Value = new PlayerDataModel(playerDataSavingService)
            };

            PlayerDataModel.Subscribe(playerDataModel =>
            {
                Debug.Log($"{nameof(playerDataModel)} changed");
            });

            Debug.Log($"{GetType().Name} initialization finished");
        }