AIFunctionFactoryOptions.MarshalResult Egenskap
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Hämtar eller anger ett ombud som används för att fastställa returnerade Object av 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))
Egenskapsvärde
Kommentarer
Som standard är returvärdet för att anropa metoden som omsluts till en AIFunction by AIFunctionFactory sedan JSON serialiserad, med resultatet JsonElement som returneras från InvokeAsync(AIFunctionArguments, CancellationToken) metoden. Det här standardbeteendet är perfekt för det vanliga fallet där resultatet skickas tillbaka till en AI-tjänst. Men om anroparen kräver mer kontroll över resultatets marskalkning MarshalResult kan egenskapen vara inställd på ett ombud som sedan får fullständig kontroll över resultatets marskalkning. Ombudet anropas med det värde som returneras av metoden och dess returvärde returneras sedan från InvokeAsync(AIFunctionArguments, CancellationToken) metoden.
När det anges anropas ombudet även för void-returning-metoder, i vilket fall det anropas med ett null argument. Som standard null returneras från InvokeAsync(AIFunctionArguments, CancellationToken) metoden för AIFunction instanser som skapas av AIFunctionFactory till wrap-returning-metoder void).
Metoder som är starkt inskrivna för att returnera typer av Task, Task<TResult>, ValueTaskoch ValueTask<TResult> är specialfall. För metoder som skrivs för att returnera Task eller ValueTaskanropas MarshalResult med null värdet när den returnerade aktiviteten har slutförts. För metoder som skrivs för att returnera Task<TResult> eller ValueTask<TResult>anropas ombudet med aktivitetens resultatvärde när aktiviteten har slutförts. Dessa beteenden håller synkrona och asynkrona metoder konsekventa.
Förutom det returnerade värdet, som tillhandahålls till ombudet som det första argumentet, tillhandahålls ombudet också med en Type representerad den deklarerade returtypen för metoden. Detta kan användas för att fastställa hur resultatet ska konverteras. Detta kan skilja sig från den faktiska typen av objekt (GetType()) om metoden returnerar en härledd typ eller null. Om metoden skrivs för att returnera Task, ValueTaskeller void, Type blir nullargumentet .