Esempio n. 1
0
        private void RegisterGenericLookup <T>(LookupDelegate <T> callback)
        {
            List <LookupDelegate> delegates;

            if (!this.lookups.TryGetValue(typeof(T), out delegates))
            {
                this.lookups[typeof(T)] = delegates = new List <LookupDelegate>();
            }

            delegates.Add(x => callback((T)x));
        }
Esempio n. 2
0
        public PrecompiledDictionary(LookupDelegate <TKey, TValue> lookup,
                                     IEnumerable <KeyValuePair <TKey, TValue> > keyValuePairs,
                                     IEqualityComparer <TValue> valueComparer)
        {
            lookup.MustNotBeNull();
            valueComparer.MustNotBeNull();
            // ReSharper disable PossibleMultipleEnumeration
            keyValuePairs.MustNotBeNull();

            _lookup        = lookup;
            _valueComparer = valueComparer;
            _keyValuePairs = keyValuePairs.ToArray();
            // ReSharper restore PossibleMultipleEnumeration
            Keys   = new ReadOnlyCollection <TKey>(_keyValuePairs.Select(kvp => kvp.Key).ToArray());
            Values = new ReadOnlyCollection <TValue>(_keyValuePairs.Select(kvp => kvp.Value).ToArray());
        }