Utility.PropertyNotifications
2.0.1
dotnet add package Utility.PropertyNotifications --version 2.0.1
NuGet\Install-Package Utility.PropertyNotifications -Version 2.0.1
<PackageReference Include="Utility.PropertyNotifications" Version="2.0.1" />
<PackageVersion Include="Utility.PropertyNotifications" Version="2.0.1" />
<PackageReference Include="Utility.PropertyNotifications" />
paket add Utility.PropertyNotifications --version 2.0.1
#r "nuget: Utility.PropertyNotifications, 2.0.1"
#:package Utility.PropertyNotifications@2.0.1
#addin nuget:?package=Utility.PropertyNotifications&version=2.0.1
#tool nuget:?package=Utility.PropertyNotifications&version=2.0.1
[](https://www.nuget.org/packages/Utility.PropertyNotifications)

# Utility PropertyNotifications
- Simplifies raising **INotifyPropertyChanged** events with helper methods [e.g RaisePropertyChanged<T>(ref T field, T value, [CallerMemberName] string propertyName = null)]
that sit inside the get/set brackets and handle value comparison and updates
- Simplifies subscribing to **INotifyPropertyChanged** events with customisable extension methods [e.g WithChangesTo] that (combined with ReactiveEx) can be used for neat subscriptions
- Adds two other interfaces, **INotifyPropertyCalled** and **INotifyPropertyReceived**, with methods comparable to those for INotifyPropertyChanged for greater control over reacting to property getting/setting
- Includes, NotifyPropertyClass - Base class providing methods for raising, calling, and receiving data changes
- Leverages CallerMemberName attribute to avoid string literals
- .NET Standard 2.0
## Example
public class MainViewModel : NotifyPropertyClass
{
private string _someProperty;
private string _otherProperty;
public string SomeProperty
{
get
{
RaisePropertyCalled(_someProperty);
return _someProperty;
}
set ⇒ RaisePropertyReceived(ref _someProperty, value);
}
public string OtherProperty
{
get ⇒ _otherProperty;
set ⇒ RaisePropertyChanged(ref _otherProperty, value);
}
}
using System;
using System.Reactive;
using System.Reactive.Linq;
public class Service
{
public Service(MainViewModel mainViewModel, IDataStore dataStore)
{
mainViewModel
.WithChangesTo(a ⇒ a.OtherProperty, includeNulls: false, includeInitialValue: true, includeDefaultValues: true)
.CombineLatest(mainViewModel.WithChangesTo(a ⇒ a.SomeProperty))
.Subscribe(o ⇒
{
Console.WriteLine(o.First + o.Second);
});
mainViewModel
.WhenReceivedFrom(a ⇒ a.SomeProperty, includeNulls: true, includeInitialValue: false, includeDefaultValues: true)
.Subscribe(value ⇒
{
if (value == "name")
{
mainViewModel.RaisePropertyChanged(nameof(MainViewModel.SomeProperty));
}
});
mainViewModel
.WhenCalledFrom(a ⇒ a.SomeProperty)
.Subscribe(async o ⇒
{
var value = await dataStore.Value<string>(nameof(MainViewModel.SomeProperty));
mainViewModel.SomeProperty = value;
});
}
}
public interface IDataStore
{
Task<T> Value<T>(string name);
}
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Newtonsoft.Json (>= 13.0.4)
- Utility.Attributes (>= 1.0.3)
- Utility.Helpers (>= 5.0.0)
- Utility.Interfaces (>= 7.0.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.