MvvmAIO.Prism.Bcl.Commands
0.5.0
dotnet add package MvvmAIO.Prism.Bcl.Commands --version 0.5.0
NuGet\Install-Package MvvmAIO.Prism.Bcl.Commands -Version 0.5.0
<PackageReference Include="MvvmAIO.Prism.Bcl.Commands" Version="0.5.0" />
<PackageVersion Include="MvvmAIO.Prism.Bcl.Commands" Version="0.5.0" />
<PackageReference Include="MvvmAIO.Prism.Bcl.Commands" />
paket add MvvmAIO.Prism.Bcl.Commands --version 0.5.0
#r "nuget: MvvmAIO.Prism.Bcl.Commands, 0.5.0"
#:package MvvmAIO.Prism.Bcl.Commands@0.5.0
#addin nuget:?package=MvvmAIO.Prism.Bcl.Commands&version=0.5.0
#tool nuget:?package=MvvmAIO.Prism.Bcl.Commands&version=0.5.0
MvvmAIO.Prism.Bcl.Commands
Prism 8 companion library that provides AsyncDelegateCommand, AsyncDelegateCommand<T>, and IAsyncCommand for apps using Prism.Core 8.1.97 together with MvvmAIO.Prism.SourceGenerators.
Prism 9+ already ships these types — you do not need this package if you're on Prism 9 or later.
When Do You Need This?
| Scenario | Need this package? |
|---|---|
Prism.Core 8.1.97 + [AsyncDelegateCommand] source generator |
Yes |
Prism.Core 8.1.97 + hand-written AsyncDelegateCommand |
Yes |
| Prism 9.0+ (any usage) | No — types already included |
Only using synchronous [DelegateCommand] on Prism 8 |
No |
Without this package on Prism 8, the analyzer reports PSG3002 — AsyncDelegateCommand type not found.
Installation
<PackageReference Include="MvvmAIO.Prism.Bcl.Commands" Version="0.3.1" />
Or:
dotnet add package MvvmAIO.Prism.Bcl.Commands
You also need
MvvmAIO.Prism.SourceGeneratorsfor the Roslyn generators and attribute definitions.
What's Included
| Type | Description |
|---|---|
AsyncDelegateCommand |
Non-generic async command with Func<Task> / Func<CancellationToken, Task> |
AsyncDelegateCommand<T> |
Generic async command with Func<T, Task> / Func<T, CancellationToken, Task> |
IAsyncCommand |
Async command abstraction (ExecuteAsync with optional CancellationToken) |
Fluent API
Both AsyncDelegateCommand and AsyncDelegateCommand<T> support Prism 9–style fluent chaining:
[AsyncDelegateCommand(
CanExecute = nameof(CanSave),
EnableParallelExecution = true,
Catch = nameof(HandleError))]
private async Task SaveAsync(CancellationToken ct)
{
await _repository.SaveAsync(ct);
}
private bool CanSave() => IsValid;
private void HandleError(Exception ex) => Logger.Error(ex);
Available fluent methods:
.EnableParallelExecution()— allow concurrent executions.CancelAfter(TimeSpan)— auto-cancel after timeout.CancellationTokenSourceFactory(Func<CancellationToken>)— custom token source.Catch(Action<Exception>)/.Catch<TException>(Action<TException>)— error handling.ObservesProperty(() => Property)— re-evaluateCanExecuteon property change.ObservesCanExecute(() => BoolProperty)— bindCanExecuteto a boolean property
Compatibility
| Supported | |
|---|---|
| Target frameworks | .NET Standard 2.0, .NET 6.0+ |
| Prism.Core | 8.1.97 |
| Dependencies | Prism.Core 8.1.97, System.Threading.Tasks.Extensions 4.6.3 (netstandard2.0 only) |
Typical Project Setup (Prism 8)
<ItemGroup>
<PackageReference Include="MvvmAIO.Prism.SourceGenerators" Version="0.2.0" />
<PackageReference Include="MvvmAIO.Prism.Bcl.Commands" Version="0.3.1" />
<PackageReference Include="Prism.Core" Version="8.1.97" />
</ItemGroup>
Resources
License
MIT — see LICENSE.
| 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 is compatible. 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 is compatible. 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 is compatible. |
| .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
- Prism.Core (>= 8.1.97)
- System.Threading.Tasks.Extensions (>= 4.6.3)
-
.NETStandard 2.1
- Prism.Core (>= 8.1.97)
-
net10.0
- Prism.Core (>= 8.1.97)
-
net8.0
- Prism.Core (>= 8.1.97)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.