【问题标题】:Azure Functions .Net 5: Is it possible to implement POCO binding somehow?Azure Functions .Net 5:是否可以以某种方式实现 POCO 绑定?
【发布时间】:2021-12-10 22:45:15
【问题描述】:

当我将我的函数移动到 .net5 时,我面临这样一个事实,即在 3.1 上运行良好的 POCO 绑定由于某种原因不再适用于 .net 5。他们说它可能会在某个时候实施,但出于某些原因,我现在需要它。试图找到一些 hacky 方法来实现这一点,但失败了。我最好的想法是在我的 DTO 对象中实现显式运算符,它将 HttpRequestData 转换为它的类型,但问题是 HttpRequestData 是一个抽象类型,它的具体实现类型是内部的。之后,我尝试通过反射将输入参数转换为中间件中的 HttpRequestData,但参数存储在不可变的 IReadOnlyDictionary 中。所以我现在没有想法了。也许有人找到了解决方法并可以分享,将不胜感激。

【问题讨论】:

  • 你能分享一些你试图这样做但失败的最小代码吗?

标签: azure azure-functions .net-5 c#-9.0


【解决方案1】:

我想您正在使用“dotnet-isolated”模式(在 .NET 5 上运行的唯一方法)。 我也在尝试找到一个更优雅的解决方案。

同时,我自己在函数内部反序列化数据。

var body = await new StreamReader(request.Body).ReadToEndAsync();
var myobject = JsonSerializer.Deserialize<MyPocoClass>(json);

如果运行时自己完成,我真的更喜欢,但我还没有找到方法。我在某处读到可以创建我们自己的绑定代码,但我还没有尝试过。

我注意到我可以绑定到 json 有效负载的各个属性,但不能绑定到对象...

我希望这可以在 Azure Functions v4 + .NET6 中实现,因为它指日可待。

【讨论】:

  • 对,我也在做同样的事情,但它很难看,因此我不得不更改所有函数签名。我的想法是创建一些底层 hack 来不改变函数定义,所以当这个功能可用时,我只是删除它,但没有找到实现这个的方法
猜你喜欢
  • 1970-01-01
  • 2015-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多