public void Add <T>(string key, T value) where T : class
        {
            MoMoBotAssert.KeyNotNullOrEmpty(key);
            MoMoBotAssert.ValueNotNull(value);

            base.Add(key, value);
        }
Esempio n. 2
0
        public Task <T> ReadAsync <T>(string key, Func <T> def)
        {
            MoMoBotAssert.KeyNotNullOrEmpty(key);

            lock (_synclock)
            {
                if (_memory.TryGetValue(key, out var state))
                {
                    if (state != null)
                    {
                        return(Task.FromResult(state.ToObject <T>(StateJsonSerializer)));
                    }
                }
                if (def != null)
                {
                    var result = def.Invoke();

                    if (result != null)
                    {
                        WriteAsync(new Dictionary <string, object> {
                            { key, result }
                        });
                        return(Task.FromResult(result));
                    }
                }
                return(default);
        public T Get <T>(string key) where T : class
        {
            MoMoBotAssert.KeyNotNullOrEmpty(key);

            if (TryGetValue(key, out var service))
            {
                if (service is T result)
                {
                    return(result);
                }
            }
            return(null);
        }