public bool TryGetParts(string action, bool excludeChannelScope, out MessagePartSpecification parts) { if (action == null) { action = MessageHeaders.WildcardAction; } parts = null; if (isReadOnly) { if (readOnlyNormalizedActionParts.ContainsKey(action)) { if (excludeChannelScope) { parts = actionParts[action]; } else { parts = readOnlyNormalizedActionParts[action]; } } } else if (actionParts.ContainsKey(action)) { MessagePartSpecification p = new MessagePartSpecification(); p.Union(actionParts[action]); if (!excludeChannelScope) { p.Union(channelParts); } parts = p; } return(parts != null); }
public void MakeReadOnly() { if (!isReadOnly) { readOnlyNormalizedActionParts = new Dictionary <string, MessagePartSpecification>(); foreach (string action in actionParts.Keys) { MessagePartSpecification p = new MessagePartSpecification(); p.Union(actionParts[action]); p.Union(channelParts); p.MakeReadOnly(); readOnlyNormalizedActionParts[action] = p; } isReadOnly = true; } }
public ScopedMessagePartSpecification(ScopedMessagePartSpecification other) : this() { if (other == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(other))); } channelParts.Union(other.channelParts); if (other.actionParts != null) { foreach (string action in other.actionParts.Keys) { MessagePartSpecification p = new MessagePartSpecification(); p.Union(other.actionParts[action]); actionParts[action] = p; } } }