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(); }
internal void RegisterQueryAspect(Type channelType, Type queryAspectType, QueryAspect qf) { Known(channelType); var channeId = channelType.FullName; if (!_channelAspectQuery.ContainsKey(channeId)) { _channelAspectQuery[channeId] = new Dictionary <string, QueryAspect>(); } var aspects = _channelAspectQuery[channeId]; var aspectId = queryAspectType.FullName; if (!aspects.ContainsKey(aspectId)) { aspects[aspectId] = qf; } else { throw new TectureException($"Query aspect {queryAspectType.Name} is already implemented for {channelType.Name}"); } qf._aux = _auxilary.ForChannel(channelType); qf.CallOnRegister(); }