internal void RegisterQueryFeature(Type channelType, Type queryFeatureType, QueryFeature qf) { Known(channelType); var channeId = channelType.FullName; if (!_channelFeaturesQuery.ContainsKey(channeId)) { _channelFeaturesQuery[channeId] = new Dictionary <string, QueryFeature>(); } var features = _channelFeaturesQuery[channeId]; var featureId = queryFeatureType.FullName; if (!features.ContainsKey(featureId)) { features[featureId] = qf; } else { throw new TectureException($"Query feature {queryFeatureType.Name} is already implemented for {channelType.Name}"); } qf._aux = _auxilary.ForChannel(channelType); qf.CallOnRegister(); }