Exemplo n.º 1
0
        public bool AddParameter(string name, Parameter parameter)
        {
            if (Parameters.ContainsKey(name))
            {
                return(false);
            }

            Parameters.Add(name, parameter);
            return(true);
        }
Exemplo n.º 2
0
        public static IReactiveDictionary <TKey, TValue> SubscribeMany <TKey, TValue>(this IReactiveDictionary <TKey, TValue> dict, Func <TKey, TValue, IDisposable> subscriptionFactory)
        {
            var seq = Observable.Create <IEnumerable <ReactiveDictionaryChange <TKey, TValue> > >(observer => {
                Dictionary <KeyValuePair <TKey, TValue>, IDisposable> subs = new Dictionary <KeyValuePair <TKey, TValue>, IDisposable>();

                var disposable1 = dict.AsObservable().Subscribe(
                    changes => {
                    foreach (var change in changes)
                    {
                        if (dict.ContainsKey(change.Key))
                        {
                            if (subs.TryGetValue(change.Pair, out var sub))
                            {
                                sub.Dispose();
                            }
                        }

                        if (change.ChangeReason == ReactiveDictionaryChangeReason.AddOrUpdate)
                        {
                            subs[change.Pair] = subscriptionFactory(change.Key, change.Value);
                        }
                    }

                    observer.OnNext(changes);
                },
                    observer.OnError,
                    observer.OnCompleted
                    );

                return(() => {
                    disposable1.Dispose();

                    foreach (var sub in subs)
                    {
                        sub.Value.Dispose();
                    }
                });
            });

            return(seq.ToDictionary(dict.TryGetValue));
        }