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]

ASP.NET Core und Angular Komplett für .NET-Entwickler

Sie  lernen in drei (3) Tagen wie man mit  ASP.NET Core und den Technologien  MVC, Entity Framework, WebAPI und  Razor professionelle sowie moderne  Web-Anwendungsarchitekturen aufbaut.  Die Schulung ist der perfekte  Einstieg um insbesondere datengetriebene  und präsentationsorientierte  Applikationen auf Basis der robusten und  skalierbaren ASP.NET Core  Plattform zu erstellen. Nach der Veranstaltung kennen Sie die Konzepte von Angular und können Angular in neue und bestehende ASP.NET-Anwendungen einsetzen.

C# Aufbaukurs

Sie haben grundlegende .NET- und C#-Kenntnisse und und wollen diese nun erweitern. Der Aufbaukurs C# führt Sie ein die Arbeit mit Interfaces und Delegates, Generics und Parallel Computing.

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!