diff --git a/src/Swan.Lite/Swan.Lite.csproj b/src/Swan.Lite/Swan.Lite.csproj
index 263eb3245..6923664ce 100644
--- a/src/Swan.Lite/Swan.Lite.csproj
+++ b/src/Swan.Lite/Swan.Lite.csproj
@@ -8,7 +8,7 @@
true
Swan.Lite
..\..\StyleCop.Analyzers.ruleset
- 2.4.1
+ 2.4.2
Unosquare
https://github.com/unosquare/swan/raw/master/swan-logo-32.png
https://github.com/unosquare/swan
diff --git a/src/Swan.Lite/ViewModelBase.cs b/src/Swan.Lite/ViewModelBase.cs
deleted file mode 100644
index 760187161..000000000
--- a/src/Swan.Lite/ViewModelBase.cs
+++ /dev/null
@@ -1,124 +0,0 @@
-using System.Collections.Concurrent;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Linq;
-using System.Runtime.CompilerServices;
-using System.Threading.Tasks;
-
-namespace Swan
-{
- ///
- /// A base class for implementing models that fire notifications when their properties change.
- /// This class is ideal for implementing MVVM driven UIs.
- ///
- ///
- public abstract class ViewModelBase : INotifyPropertyChanged
- {
- private readonly ConcurrentDictionary _queuedNotifications = new ConcurrentDictionary();
- private readonly bool _useDeferredNotifications;
-
- ///
- /// Initializes a new instance of the class.
- ///
- /// Set to true to use deferred notifications in the background.
- protected ViewModelBase(bool useDeferredNotifications)
- {
- _useDeferredNotifications = useDeferredNotifications;
- }
-
- ///
- /// Initializes a new instance of the class.
- ///
- protected ViewModelBase()
- : this(false)
- {
- // placeholder
- }
-
- ///
- public event PropertyChangedEventHandler PropertyChanged;
-
- /// Checks if a property already matches a desired value. Sets the property and
- /// notifies listeners only when necessary.
- /// Type of the property.
- /// Reference to a property with both getter and setter.
- /// Desired value for the property.
- /// Name of the property used to notify listeners. This
- /// value is optional and can be provided automatically when invoked from compilers that
- /// support CallerMemberName.
- /// An array of property names to notify in addition to notifying the changes on the current property name.
- /// True if the value was changed, false if the existing value matched the
- /// desired value.
- protected bool SetProperty(ref T storage, T value, [CallerMemberName] string propertyName = "", string[] notifyAlso = null)
- {
- if (EqualityComparer.Default.Equals(storage, value))
- return false;
-
- storage = value;
- NotifyPropertyChanged(propertyName, notifyAlso);
- return true;
- }
-
- ///
- /// Notifies one or more properties changed.
- ///
- /// The property names.
- protected void NotifyPropertyChanged(params string[] propertyNames) => NotifyPropertyChanged(null, propertyNames);
-
- ///
- /// Notifies one or more properties changed.
- ///
- /// The main property.
- /// The auxiliary properties.
- private void NotifyPropertyChanged(string mainProperty, string[] auxiliaryProperties)
- {
- // Queue property notification
- if (string.IsNullOrWhiteSpace(mainProperty) == false)
- _queuedNotifications[mainProperty] = true;
-
- // Set the state for notification properties
- if (auxiliaryProperties != null)
- {
- foreach (var property in auxiliaryProperties)
- {
- if (string.IsNullOrWhiteSpace(property) == false)
- _queuedNotifications[property] = true;
- }
- }
-
- // Depending on operation mode, either fire the notifications in the background
- // or fire them immediately
- if (_useDeferredNotifications)
- Task.Run(NotifyQueuedProperties);
- else
- NotifyQueuedProperties();
- }
-
- ///
- /// Notifies the queued properties and resets the property name to a non-queued stated.
- ///
- private void NotifyQueuedProperties()
- {
- // get a snapshot of property names.
- var propertyNames = _queuedNotifications.Keys.ToArray();
-
- // Iterate through the properties
- foreach (var property in propertyNames)
- {
- // don't notify if we don't have a change
- if (!_queuedNotifications[property]) continue;
-
- // notify and reset queued state to false
- try { OnPropertyChanged(property); }
- finally { _queuedNotifications[property] = false; }
- }
- }
-
- ///
- /// Called when a property changes its backing value.
- ///
- /// Name of the property.
- private void OnPropertyChanged(string propertyName) =>
- PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName ?? string.Empty));
- }
-}
diff --git a/src/Swan/Swan.csproj b/src/Swan/Swan.csproj
index f451bbaf3..7491bf300 100644
--- a/src/Swan/Swan.csproj
+++ b/src/Swan/Swan.csproj
@@ -8,7 +8,7 @@
true
Swan
..\..\StyleCop.Analyzers.ruleset
- 2.4.0
+ 2.4.2
Unosquare
https://github.com/unosquare/swan/raw/master/swan-logo-32.png
https://github.com/unosquare/swan