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)); }
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()); }