AIFunctionFactoryOptions.MarshalResult Propriedade
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Obtém ou define um delegado usado para determinar o Object retornado por 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))
Valor da propriedade
Comentários
Por padrão, o valor retornado de invocar o método encapsulado em um AIFunction by é então serializado por AIFunctionFactory JSON, com o resultado JsonElement retornado do InvokeAsync(AIFunctionArguments, CancellationToken) método. Esse comportamento padrão é ideal para o caso comum em que o resultado será passado de volta para um serviço de IA. No entanto, se o chamador exigir mais controle sobre o marshaling do resultado, a MarshalResult propriedade poderá ser definida como um delegado fornecido com controle total sobre o marshaling do resultado. O delegado é invocado com o valor retornado pelo método e seu valor retornado é retornado do InvokeAsync(AIFunctionArguments, CancellationToken) método.
Quando definido, o delegado é invocado mesmo para voidmétodos de retorno, nesse caso, ele é invocado com um null argumento. Por padrão, null é retornado do InvokeAsync(AIFunctionArguments, CancellationToken) método para AIFunction instâncias produzidas por AIFunctionFactory meio de métodos de encapsulamento void-retornando).
Métodos fortemente tipados para retornar tipos de Task, Task<TResult>ValueTaske ValueTask<TResult> são casos especiais. Para métodos tipado para retornar Task ou ValueTask, MarshalResult serão invocados com o null valor depois que a tarefa retornada tiver sido concluída com êxito. Para métodos digitado para retornar Task<TResult> ou ValueTask<TResult>, o delegado será invocado com o valor de resultado da tarefa depois que a tarefa for concluída com êxito. Esses comportamentos mantêm métodos síncronos e assíncronos consistentes.
Além do valor retornado, que é fornecido ao delegado como o primeiro argumento, o delegado também é fornecido com um Type tipo de retorno declarado representado do método. Isso pode ser usado para determinar como fazer marshaling do resultado. Isso pode ser diferente do tipo real do objeto (GetType()) se o método retornar um tipo derivado ou null. Se o método for digitado para retornar Task, ValueTaskou void, o Type argumento será null.