AIFunctionFactoryOptions.MarshalResult Proprietà

Definizione

Ottiene o imposta un delegato utilizzato per determinare l'oggetto Object restituito da 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))

Valore della proprietà

Commenti

Per impostazione predefinita, il valore restituito di richiamare il metodo sottoposto a wrapping in un AIFunctionAIFunctionFactory oggetto by viene quindi serializzato in formato JSON, con il risultato JsonElement restituito dal InvokeAsync(AIFunctionArguments, CancellationToken) metodo . Questo comportamento predefinito è ideale per il caso comune in cui il risultato verrà passato a un servizio di intelligenza artificiale. Tuttavia, se il chiamante richiede un maggiore controllo sul marshalling del risultato, la MarshalResult proprietà può essere impostata su un delegato che viene quindi fornito con il controllo completo sul marshalling del risultato. Il delegato viene richiamato con il valore restituito dal metodo e il relativo valore restituito viene quindi restituito dal InvokeAsync(AIFunctionArguments, CancellationToken) metodo .

Se impostato, il delegato viene richiamato anche per voidi metodi che restituiscono , nel qual caso viene richiamato con un null argomento . Per impostazione predefinita, null viene restituito dal InvokeAsync(AIFunctionArguments, CancellationToken) metodo per AIFunction le istanze prodotte da AIFunctionFactory per eseguire il wrapping voiddei metodi restituiti.

I metodi fortemente tipizzato per restituire i tipi , TaskTask<TResult>, ValueTaske ValueTask<TResult> sono con maiuscole e minuscole speciali. Per i metodi digitati per restituire Task o ValueTask, MarshalResult verrà richiamato con il null valore dopo il completamento dell'attività restituita. Per i metodi digitati per restituire Task<TResult> o ValueTask<TResult>, il delegato verrà richiamato con il valore del risultato dell'attività dopo il completamento dell'attività. Questi comportamenti mantengono coerenti i metodi sincroni e asincroni.

Oltre al valore restituito, fornito al delegato come primo argomento, il delegato viene fornito anche con un Type oggetto rappresentato dal tipo restituito dichiarato del metodo. Può essere usato per determinare come effettuare il marshalling del risultato. Può essere diverso dal tipo effettivo dell'oggetto (GetType()) se il metodo restituisce un tipo derivato o null. Se il metodo viene tipizzato per restituire Task, ValueTasko void, l'argomento Type sarà null.

Si applica a