AsyncReactAwait 0.12.22
dotnet add package AsyncReactAwait --version 0.12.22
NuGet\Install-Package AsyncReactAwait -Version 0.12.22
<PackageReference Include="AsyncReactAwait" Version="0.12.22" />
<PackageVersion Include="AsyncReactAwait" Version="0.12.22" />
<PackageReference Include="AsyncReactAwait" />
paket add AsyncReactAwait --version 0.12.22
#r "nuget: AsyncReactAwait, 0.12.22"
#:package AsyncReactAwait@0.12.22
#addin nuget:?package=AsyncReactAwait&version=0.12.22
#tool nuget:?package=AsyncReactAwait&version=0.12.22
AsyncReactAwait (Ara)
Ara is the development suit for asynchronous and reactive C# development. It contains classes for convenient data changing and handling management.
Bindable
IBindable
and IMutable
interfaces are supposed to be used for convenient changes handling of fields and properties
Example
public class HumanModel
{
private IMutable _age = new Mutable();
public IBindable Age => _age; // keep age being mutable only from inside the class
private IMutable _name = new Mutable("No-Name");
public IBindable Name => _name; // keep name being mutable only from inside the class
public void SetName(string newName)
{
_name.Value = newName;
}
public void IncrementAge()
{
_age.Value++;
}
}
public class HumanView : IDisposable
{
private readonly SomeLabel _ageLabel = new SomeLabel();
private readonly SomeLabel _nameLabel = new SomeLabel();
private readonly HumanModel _model;
public HumanView(HumanModel model)
{
_model = model;
_model.Age.Bind(_ageLabel.SetText);
_model.Name.Bind(_nameLabel.SetText);
}
public void Dispose()
{
_model.Age.Unbind(_ageLabel.SetText);
_model.Name.Unbind(_nameLabel.SetText);
}
}
Also IBindable
have methods for awaiting some specific value.
Example with async
public class ScoreModel
{
private IMutable<int> _score = new Mutable();
public IBindable Score => _score;
public void AddScore(int score)
{
_score += score;
}
public async void AddBonus(int bonusValue, int requiredScore)
{
await Score.WillBe(s =>
s >= requiredScore);
AddScore(bonusValue);
}
}
Promises
Promises are some kind of a replacement for regular C# Task
. They can also be used as a return type for async
methods or with await
like tasks.
But promises have two advantages:
- Promises have an interface. So you can easely substitute them to some other implementation.
- Promises' completition is easier to control from managed code with
Success
andFail
methods.
Example
// The third party class for playing animations
public abstract class ThirdPartyAnimation
{
protected void Start() {...}
protected virtual void Ended() {...}
}
// Managed animation implementation.
public class Animation : ThirdPartyAnimation
{
private IControllablePromise _playingPromise;
public async IPromise Play() {
_playingPromise = new ControllablePromise();
Start();
await _playingPromise;
}
protected override void Ended() {
base.Ended();
_playingPromise?.Success();
_playingPromise = null;
}
}
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 | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.1 is compatible. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | 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.1
- No dependencies.
NuGet packages (1)
Showing the top 1 NuGet packages that depend on AsyncReactAwait:
Package | Downloads |
---|---|
UnityMVVM
MVVM pattern implemented for Unity3d game engine. |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last Updated |
---|---|---|
0.12.22 | 139 | 6/19/2025 |
0.12.21 | 133 | 6/19/2025 |
0.12.10 | 160 | 8/23/2024 |
0.11.110 | 234 | 7/21/2024 |
0.11.2 | 302 | 11/30/2023 |
0.10.48 | 154 | 11/27/2023 |
0.10.46 | 119 | 11/15/2023 |
0.10.35 | 160 | 11/15/2023 |
0.9.33 | 238 | 7/31/2023 |
0.9.32 | 166 | 7/30/2023 |
0.9.31 | 236 | 7/7/2023 |
0.8.30 | 217 | 5/28/2023 |
0.8.29 | 263 | 5/7/2023 |
0.8.28 | 393 | 4/17/2023 |
0.7.27 | 219 | 4/16/2023 |
0.7.26 | 210 | 4/16/2023 |
0.7.25 | 211 | 4/16/2023 |
0.7.24 | 297 | 4/1/2023 |
0.7.23 | 397 | 3/12/2023 |
0.6.20 | 309 | 2/3/2023 |
0.6.19 | 415 | 2/3/2023 |
0.6.18 | 317 | 2/3/2023 |