Я использую несколько функций, таких как
ICollection<ICache> caches = new HashSet<ICache>();
ICollection<T> Matches<T>(string dependentVariableName)
{
return caches
.Where(x => x.GetVariableName() == dependentVariableName)
.Where(x => typeof(T).IsAssignableFrom(x.GetType()))
.Select(x => (T) x)
.ToList();
}
в моем текущем классе дизайна. Они прекрасно работают с точки зрения архитектуры - где я могу произвольно добавлять объекты различных связанных типов (в данном случае ICaches) и извлекать их как коллекции конкретных типов.
Проблема в том, что инфраструктура здесь представляет собой научный пакет, и такого рода функции лежат на очень горячих путях кода, которые вызываются тысячи раз в течение нескольких минут. Результат:
и подобные функции являются основными потребителями COMDelegate :: DelegateConstruct.
Как вы можете видеть из относительного распределения выборки в%, это не прерыватель сделки, но было бы здорово уменьшить накладные расходы немного!
Заранее спасибо.