Feedback

C# - ObservableCollection extension methods in .Net

Veröffentlicht von am 11.03.2017
(0 Bewertungen)
ObservableCollection extension methods in .Net
GFU-Schulungen  [Anzeige]

Angular mit ASP.NET Core für .NET-Entwickler

.NET ist Ihnen vertraut, als Entwickler verfügen Sie über einschlägige Kenntnisse. In diesem Kurs lernen Sie nun, Angular in .NET-Umgebungen einzusetzen. Sie verstehen das Konzept von Angular und integrieren das clientseitige JS-Framework sicher in.NET-Anwendungen.

VB.NET Komplett

Sie stehen vo der Aufgabe, individuelle Anwendungen für Windows zu schreiben. Hier ist VB.NET die optimale Sprache. Sie erlernt sich recht leicht und passt sich komplett in die .NET Umgebung von Microsoft ein. Nach der Schulung entwickeln Sie anwenderfreundliche Programme in VB.NET . Mit den objektorientierten Modellen in VB.NET erzeugen Sie außerdem wiederverwendbare Komponenten.

using System;
using System.Collections.ObjectModel;
using System.Linq;

namespace CollectionExtensions
{
    public static class ObservableCollectionExtension
    {
        public static void AddIfNotExists<T>(this ObservableCollection<T> collection, T value)
        {
            CheckObservableCollectionIsNull(collection);
            if (!collection.Contains(value))
                collection.Add(value);
        }

        public static void UpdateValue<T>(this ObservableCollection<T> collection, T value, T newValue)
        {
            CheckObservableCollectionAndValueIsNull(collection, value);
            CheckValueIsNull(newValue);
            var index = collection.IndexOf(value);
            collection[index] = newValue;
        }

        public static void DeleteIfExists<T>(this ObservableCollection<T> collection, T value)
        {
            CheckObservableCollectionAndValueIsNull(collection, value);
            if (collection.Contains(value))
                collection.Remove(value);
        }

        public static bool AreValuesEmpty<T>(this ObservableCollection<T> collection)
        {
            CheckObservableCollectionIsNull(collection);
            return collection.All(x => x == null);
        }

        private static void CheckObservableCollectionAndValueIsNull<T>(this ObservableCollection<T> collection, T value)
        {
            CheckObservableCollectionIsNull(collection);
            CheckValueIsNull(value);
        }

        private static void CheckValueIsNull<T>(T value)
        {
            if (value == null) throw new ArgumentNullException(nameof(value));
        }

        private static void CheckObservableCollectionIsNull<T>(this ObservableCollection<T> collection)
        {
            if (collection == null) throw new ArgumentNullException(nameof(collection));
        }
    }
}

2 Kommentare zum Snippet

Koopakiller schrieb am 15.03.2017:
Da ObservableCollection<T> von Collection<T> erbt, welches wiederum IList<T> implementiert, würde es auch reichen die Methoden deines anderen Snippets zu verwenden.
https://dotnet-snippets.de/snippet/list-extension-methods-in-net/15164

Ansonsten gilt das selbe wie ich unter dem anderen Snippet postete.
FranzHuber23 schrieb am 17.03.2017:
Das habe ich nicht bedacht, da hast du natürlich auch wieder Recht ;)
 

Logge dich ein, um hier zu kommentieren!