Feedback

C# - Einfache PropertyChanged-Properties .net 4.5

Veröffentlicht von am 04.11.2015
(1 Bewertungen)
Mit dieser Klasse lassen sich Notify-Changed-Properties sehr einfach implementieren, ohne dass für jede property ein entsprechendes private field benötigt wird. Voraussetung für die Verwendung dieser Klasse ist das .net-Framework 4.5.

Eine ähnliche Implementierung dieser Klasse befindet sich hinter dem nachfolgenden Link. Der Unterschied dabei ist, dass dafür lediglich das .net-Framework 3.5 (oder höher) erforderlich ist.
http://dotnet-snippets.de/snippet/einfache-propertychanged-properties/11016

Die Verwendung ist sehr einfach. Die ViewModel-Klasse wird einfach von NotifyBase abgleitet und properties können dann wie folgt definiert werden:

 public string MyProperty
{
get { return Get<string>(); }
set { Set(value); }
}
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.Collections.Generic;
using System.ComponentModel;
using System.Runtime.CompilerServices;

namespace NameSpace
{
    public abstract class NotifyBase : INotifyPropertyChanged
    {

        private readonly Dictionary<string, object> propertyValues;

        protected NotifyBase()
        {
            propertyValues = new Dictionary<string, object>();
        }

        protected void Set<T>(T value, [CallerMemberName]string propertyName = null)
        {
            if (propertyValues.ContainsKey(propertyName))
            {
                propertyValues[propertyName] = value;
            }
            else
            {
                propertyValues.Add(propertyName, value);
            }
            OnPropertyChanged(propertyName);
        }

        protected T Get<T>([CallerMemberName] string propertyName = null)
        {
            if (propertyValues.ContainsKey(propertyName))
            {
                return (T) propertyValues[propertyName];
            }
            return default(T);
        }

        public event PropertyChangedEventHandler PropertyChanged;

        protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
        {
            PropertyChangedEventHandler handler = PropertyChanged;
            if (handler != null)
            {
                handler(this, new PropertyChangedEventArgs(propertyName));
            }
        }
    }
}
Abgelegt unter c#, WPF, INotifyPropertyChanged.

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!