public CachedAnalyzer(IStreamAnalyzer <T> analyzer) { Analyzer = analyzer; if (analyzer is IFilteredStreamAnalyzer <T> ) { var f = ((IFilteredStreamAnalyzer <T>)analyzer); _filterFunc = item => f.CanAnalyze(item); } else { _filterFunc = x => true; } if (analyzer is IIndexStreamAnalyzer <T> ) { var index = ((IIndexStreamAnalyzer <T>)analyzer).OnlyOnIndex(); _indexerFunc = x => x.Contains(index); } else { _indexerFunc = x => true; } }
public void AddAnalyzer(IStreamAnalyzer <T> analyzer) { _analyzers.Add(new CachedAnalyzer <T>(analyzer)); }