AIFunctionFactoryOptions.MarshalResult プロパティ

定義

Objectによって返されるInvokeAsync(AIFunctionArguments, CancellationToken)を決定するために使用するデリゲートを取得または設定します。

public:
 property Func<System::Object ^, Type ^, System::Threading::CancellationToken, System::Threading::Tasks::ValueTask<System::Object ^>> ^ MarshalResult { Func<System::Object ^, Type ^, System::Threading::CancellationToken, System::Threading::Tasks::ValueTask<System::Object ^>> ^ get(); void set(Func<System::Object ^, Type ^, System::Threading::CancellationToken, System::Threading::Tasks::ValueTask<System::Object ^>> ^ value); };
public Func<object?,Type?,System.Threading.CancellationToken,System.Threading.Tasks.ValueTask<object?>>? MarshalResult { get; set; }
member this.MarshalResult : Func<obj, Type, System.Threading.CancellationToken, System.Threading.Tasks.ValueTask<obj>> with get, set
Public Property MarshalResult As Func(Of Object, Type, CancellationToken, ValueTask(Of Object))

プロパティ値

注釈

既定では、AIFunctionFactoryによってAIFunctionにラップされたメソッドを呼び出す戻り値は JSON シリアル化され、結果のJsonElementInvokeAsync(AIFunctionArguments, CancellationToken)メソッドから返されます。 この既定の動作は、結果が AI サービスに返される一般的なケースに最適です。 ただし、呼び出し元が結果のマーシャリングをより詳細に制御する必要がある場合は、 MarshalResult プロパティをデリゲートに設定し、結果のマーシャリングを完全に制御できます。 デリゲートはメソッドによって返された値で呼び出され、その戻り値は InvokeAsync(AIFunctionArguments, CancellationToken) メソッドから返されます。

設定すると、デリゲートは void返すメソッドの場合でも呼び出されます。その場合は、 null 引数を使用して呼び出されます。 既定では、nullは、AIFunctionFactoryによって生成されたAIFunctionインスタンスのInvokeAsync(AIFunctionArguments, CancellationToken) メソッドから返され、void返されるメソッド) がラップされます。

TaskTask<TResult>ValueTask、およびValueTask<TResult>の型を返すように厳密に型指定されたメソッドは、特殊なケースです。 TaskまたはValueTaskを返すように型指定されたメソッドの場合、MarshalResultは、返されたタスクが正常に完了した後、null値で呼び出されます。 Task<TResult>またはValueTask<TResult>を返すように型指定されたメソッドの場合、デリゲートは、タスクが正常に完了した後、タスクの結果値と共に呼び出されます。これらの動作により、同期メソッドと非同期メソッドの一貫性が維持されます。

デリゲートに最初の引数として提供される戻り値に加えて、デリゲートには、メソッドの宣言された戻り値の型を表す Type も提供されます。 これを使用して、結果をマーシャリングする方法を決定できます。 メソッドが派生型またはnullを返す場合、これはオブジェクトの実際の型 (GetType()) とは異なる場合があります。 メソッドが TaskValueTask、または voidを返すように型指定されている場合、 Type 引数は nullされます。

適用対象