Feedback

C# - ObservableCollection extension methods in .Net

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

C# 2017/2015/2013 Aufbau

In dieser Schulung lernen Sie fortgeschrittene Techniken im Bereich .Net C#. Dabei stehen neben den eigentlichen Techniken auch architektonische Aspekte im Mittelpunkt.

VB.NET Aufbau

Sie verfügen nach der Schulung über fundierte Kenntnisse in der Arbeit mit objektorientierten Modellen in VB.NET und können wiederverwendbare Komponenten eigenständig erzeugen.

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!