gpt4 book ai didi

c# - RestSharp 更新 AddHandler 方法的使用以使用工厂委托(delegate)

转载 作者:行者123 更新时间:2023-12-01 16:49:21 25 4
gpt4 key购买 nike

最新版本的 RestSharp v106.6.9 显然做了一些更改,使得 Request 的 AddHandler 方法的重写过时,例如此签名:

[Obsolete("Use the overload that accepts a factory delegate")]
public void AddHandler(IDeserializer deserializer, params string[] contentTypes)

正如它建议使用工厂委托(delegate)表单

public void AddHandler(string contentType, Func<IDeserializer> deserializerFactory)

public void AddHandler(Func<IDeserializer> deserializerFactory, params string[] contentTypes)

任何人都可以向我指出一个实现此功能的示例吗?或者解释如何将我对实现 IDeserializer 的 customSerializer 的使用转换为工厂委托(delegate):

RestClient.AddHandler("application/json", CustomJsonSerializer.Instance);


public class CustomJsonSerializer : IDeserializer
{
public static CustomJsonSerializer Instance => new CustomJsonSerializer();

public string ContentType
{
get => "application/json";
set { } // maybe used for Serialization?
}

public string DateFormat { get; set; }

public string Namespace { get; set; }

public string RootElement { get; set; }

public T Deserialize<T>(IRestResponse response) => RestSharpResponseHandlers.DeserializeObject<T>(response);
}

最佳答案

根据源代码https://github.com/restsharp/RestSharp/blob/dev/src/RestSharp/RestClient.cs :

 [Obsolete("Use the overload that accepts a factory delegate")]
public void AddHandler(string contentType, IDeserializer deserializer) =>
AddHandler(contentType, () => deserializer);

过时的重载仅调用 AddHandler(string contentType, Func<IDeserializer> deserializerFactory)过载。

因此,您可以替换代码以添加自定义处理程序,如下所示:

RestClient.AddHandler("application/json", () => { return CustomJsonSerializer.Instance; });

关于c# - RestSharp 更新 AddHandler 方法的使用以使用工厂委托(delegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55013058/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com