【问题标题】:Variable injection from one function to another function directly变量直接从一个函数注入到另一个函数
【发布时间】:2020-01-05 11:51:25
【问题描述】:

我有一个 C# Web API 项目。在那个 Web API 项目中,有许多控制器来接收 GET / POST 请求。这些控制器调用函数,这些函数又调用分布在多个类中的其他函数。有时流量可以在 20 多个地方。

程序已经在运行。现在有一个变化,为此我需要将 API CONTROLLER 中接收到的变量传递给内部深处的函数之一。

现在的问题是我必须传递变量,这将需要大量的返工。

有没有办法(比如依赖注入,但不确定)可以将变量直接传递给内部深处的函数?

请参阅附图,我必须将 WEB API 中收到的变量传递给 DOMAIN FLEX 而不将变量传递给中介? 这根本不可能吗?

【问题讨论】:

  • 我可以考虑很多肮脏的方式,但我不会在我的代码中实现。我会重写整个链(如果更有意义的话,也许可以用其他变量将变量封装在一个对象中)。
  • 据我了解,您的系统由几层(服务、应用程序、域)组成。也许不是传递原始变量而是抛出所有这些层,您可以将其添加到现有模型中(例如ViewModel) 并在层之间传递模型?

标签: c# dependency-injection


【解决方案1】:

我认为 DI 不会对您有太大帮助,因为当您的控制器收到您想要传递的值时,DI 已经实例化了所有较低级别的依赖项。这似乎适用于 .net core 以及 "classic" asp.net

这里我们到达了肮脏的黑客领域。实现您所追求的一种方法是直接从您的Domain Flex 检查HttpContext.Current 并手动获取您的参数(或使用某种辅助方法)。您可能会将其设为专用中间件,因此请查看request pipeline,看看制作自定义处理程序是否可以帮助您。

但是这样做肯定会违反很多设计原则,你需要一个令人信服的理由才能这样做。

【讨论】:

    猜你喜欢
    • 2022-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-23
    • 1970-01-01
    相关资源
    最近更新 更多