AIFunctionFactoryOptions.MarshalResult Propriedade
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Obtém ou define um delegado usado para determinar o Object retorno 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 de Propriedade
Observações
Por defeito, o valor de retorno da invocação do método envolvido num AIFunction by AIFunctionFactory é então serializado em JSON, com o resultado JsonElement devolvido do InvokeAsync(AIFunctionArguments, CancellationToken) método. Este comportamento padrão é ideal para o caso comum em que o resultado será repassado para um serviço de IA. No entanto, se o chamador exigir mais controlo sobre o marshaling do resultado, a MarshalResult propriedade pode ser definida como um delegado que recebe controlo total sobre o marshaling do resultado. O delegado é invocado com o valor devolvido pelo método, e o seu valor de retorno é então devolvido pelo InvokeAsync(AIFunctionArguments, CancellationToken) método.
Quando definido, o delegado é invocado até para voidmétodos que retornam -, caso em que é invocado com um null argumento. Por defeito, null é devolvido do InvokeAsync(AIFunctionArguments, CancellationToken) método para AIFunction instâncias produzidas por AIFunctionFactory para os métodos de retorno de wrap void).
Métodos fortemente tipados para devolver tipos de Task, Task<TResult>, ValueTask, e ValueTask<TResult> são casos especiais. Para os métodos digitados para devolver Task ou ValueTask, MarshalResult será invocado com o null valor após a tarefa devolvida ter sido concluída com sucesso. Para métodos digitados para devolver Task<TResult> ou ValueTask<TResult>, o delegado será invocado com o valor do resultado da tarefa após a conclusão bem-sucedida da tarefa. Estes comportamentos mantêm os métodos síncronos e assíncronos consistentes.
Além do valor devolvido, que é fornecido ao delegado como primeiro argumento, o delegado também recebe um Type tipo de retorno declarado representado do método. Isto pode ser usado para determinar como organizar o resultado. Isto pode ser diferente do tipo real do objeto (GetType()) se o método devolver um tipo derivado ou null. Se o método for tipado para devolver Task, ValueTask, ou void, o Type argumento será null.