/// <summary> /// Ermittelt eine oder mehrere Quellen nach dem Namen. Diese Methode ist relativ langsam und /// sollte nicht verwendet werden, wenn häufig nach Namen nachgeschlagen werden muss. /// </summary> /// <param name="name">Der gewünschte Name.</param> /// <param name="matching">Der Vergleichsmodus.</param> /// <returns>Alle Quellen, deren Namen dem Muster entsprechen.</returns> /// <exception cref="ArgumentNullException">Der Name darf nicht leer sein.</exception> public SourceSelection[] FindSource(string name, SourceNameMatchingModes matching) { // Validate if (string.IsNullOrEmpty(name)) { throw new ArgumentNullException("name"); } else { return(InternalFindSource(name, matching).ToArray()); } }
/// <summary> /// Ermittelt eine oder mehrere Quellen nach dem Namen. /// </summary> /// <param name="name">Der gewünschte Name.</param> /// <param name="matching">Der Vergleichsmodus.</param> /// <returns>Alle Quellen, deren Namen dem Muster entsprechen.</returns> private IEnumerable <SourceSelection> InternalFindSource(string name, SourceNameMatchingModes matching) { // Process all foreach (var source in AllSources) { // Attach to station var station = (Station)source.Source; // Test all if (((matching & SourceNameMatchingModes.Name) != 0) && StringComparer.InvariantCultureIgnoreCase.Equals(name, station.Name)) { yield return(source); } else if (((matching & SourceNameMatchingModes.FullName) != 0) && StringComparer.InvariantCultureIgnoreCase.Equals(name, station.FullName)) { yield return(source); } else if (((matching & SourceNameMatchingModes.QualifiedName) != 0) && StringComparer.InvariantCultureIgnoreCase.Equals(name, station.QualifiedName)) { yield return(source); } } }
/// <summary> /// Ermittelt eine oder mehrere Quellen nach dem Namen. /// </summary> /// <param name="name">Der gewünschte Name.</param> /// <param name="matching">Der Vergleichsmodus.</param> /// <returns>Alle Quellen, deren Namen dem Muster entsprechen.</returns> private IEnumerable<SourceSelection> InternalFindSource( string name, SourceNameMatchingModes matching ) { // Process all foreach (var source in AllSources) { // Attach to station var station = (Station) source.Source; // Test all if (((matching & SourceNameMatchingModes.Name) != 0) && StringComparer.InvariantCultureIgnoreCase.Equals( name, station.Name )) yield return source; else if (((matching & SourceNameMatchingModes.FullName) != 0) && StringComparer.InvariantCultureIgnoreCase.Equals( name, station.FullName )) yield return source; else if (((matching & SourceNameMatchingModes.QualifiedName) != 0) && StringComparer.InvariantCultureIgnoreCase.Equals( name, station.QualifiedName )) yield return source; } }
/// <summary> /// Ermittelt eine oder mehrere Quellen nach dem Namen. Diese Methode ist relativ langsam und /// sollte nicht verwendet werden, wenn häufig nach Namen nachgeschlagen werden muss. /// </summary> /// <param name="name">Der gewünschte Name.</param> /// <param name="matching">Der Vergleichsmodus.</param> /// <returns>Alle Quellen, deren Namen dem Muster entsprechen.</returns> /// <exception cref="ArgumentNullException">Der Name darf nicht leer sein.</exception> public SourceSelection[] FindSource( string name, SourceNameMatchingModes matching ) { // Validate if (string.IsNullOrEmpty( name )) throw new ArgumentNullException( "name" ); else return InternalFindSource( name, matching ).ToArray(); }