AIFunctionFactoryOptions.MarshalResult Propiedad
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Obtiene o establece un delegado usado para determinar el Object devuelto 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 propiedad
Comentarios
De forma predeterminada, el valor devuelto de invocar el método encapsulado en un AIFunction por AIFunctionFactory es JSON serializado, con el resultado JsonElement devuelto por el InvokeAsync(AIFunctionArguments, CancellationToken) método . Este comportamiento predeterminado es ideal para el caso común en el que el resultado se volverá a pasar a un servicio de IA. Sin embargo, si el autor de la llamada requiere más control sobre la serialización del resultado, la MarshalResult propiedad se puede establecer en un delegado que, a continuación, se proporciona con control completo sobre la serialización del resultado. El delegado se invoca con el valor devuelto por el método y su valor devuelto se devuelve a partir del InvokeAsync(AIFunctionArguments, CancellationToken) método .
Cuando se establece, el delegado se invoca incluso para voidlos métodos que devuelven , en cuyo caso se invoca con un null argumento . De forma predeterminada, null se devuelve del InvokeAsync(AIFunctionArguments, CancellationToken) método para AIFunction las instancias generadas por AIFunctionFactory para encapsular voidmétodos que devuelven).
Los métodos fuertemente tipados para devolver tipos de Task, Task<TResult>, ValueTasky ValueTask<TResult> tienen mayúsculas y minúsculas especiales. Para que los métodos tipados devuelvan Task o ValueTask, MarshalResult se invocarán con el null valor después de que la tarea devuelta se haya completado correctamente. Para que los métodos tipados devuelvan Task<TResult> o ValueTask<TResult>, el delegado se invocará con el valor de resultado de la tarea después de que la tarea se haya completado correctamente. Estos comportamientos mantienen coherentes los métodos sincrónicos y asincrónicos.
Además del valor devuelto, que se proporciona al delegado como primer argumento, el delegado también se proporciona con un Type representado el tipo de valor devuelto declarado del método . Esto se puede usar para determinar cómo calcular las referencias del resultado. Puede ser diferente del tipo real del objeto (GetType()) si el método devuelve un tipo derivado o null. Si el método se escribe para devolver Task, ValueTasko void, el Type argumento será null.