File tree Expand file tree Collapse file tree 2 files changed +10
-3
lines changed Expand file tree Collapse file tree 2 files changed +10
-3
lines changed Original file line number Diff line number Diff line change @@ -309,8 +309,9 @@ public static (string FieldName, string PropertyName) GetGeneratedFieldAndProper
309309 {
310310 string propertyName = methodSymbol . Name ;
311311
312- if ( methodSymbol . ReturnType . HasFullyQualifiedName ( "global::System.Threading.Tasks.Task" ) &&
313- methodSymbol . Name . EndsWith ( "Async" ) )
312+ if ( methodSymbol . Name . EndsWith ( "Async" ) &&
313+ ( methodSymbol . ReturnType . HasFullyQualifiedName ( "global::System.Threading.Tasks.Task" ) ||
314+ methodSymbol . ReturnType . InheritsFromFullyQualifiedName ( "global::System.Threading.Tasks.Task" ) ) )
314315 {
315316 propertyName = propertyName . Substring ( 0 , propertyName . Length - "Async" . Length ) ;
316317 }
@@ -372,7 +373,9 @@ private static bool TryMapCommandTypesFromMethod(
372373 return true ;
373374 }
374375
375- if ( methodSymbol . ReturnType . HasFullyQualifiedName ( "global::System.Threading.Tasks.Task" ) )
376+ // Map all Task-returning methods
377+ if ( methodSymbol . ReturnType . HasFullyQualifiedName ( "global::System.Threading.Tasks.Task" ) ||
378+ methodSymbol . ReturnType . InheritsFromFullyQualifiedName ( "global::System.Threading.Tasks.Task" ) )
376379 {
377380 // Map <void, Task> to IAsyncRelayCommand, AsyncRelayCommand, Func<Task>
378381 if ( methodSymbol . Parameters . Length == 0 )
Original file line number Diff line number Diff line change @@ -51,11 +51,15 @@ namespace CommunityToolkit.Mvvm.Input;
5151/// <code>
5252/// Task Method();
5353/// Task Method(CancellationToken);
54+ /// Task<T> Method();
55+ /// Task<T> Method(CancellationToken);
5456/// </code>
5557/// Will both generate an <see cref="IAsyncRelayCommand"/> property (using an <see cref="AsyncRelayCommand{T}"/> instance).
5658/// <code>
5759/// Task Method(T?);
5860/// Task Method(T?, CancellationToken);
61+ /// Task<T> Method(T?);
62+ /// Task<T> Method(T?, CancellationToken);
5963/// </code>
6064/// Will both generate an <see cref="IAsyncRelayCommand{T}"/> property (using an <see cref="AsyncRelayCommand{T}"/> instance).
6165/// </para>
You can’t perform that action at this time.
0 commit comments