【问题标题】:Dependency injection with UrlHelper使用 UrlHelper 进行依赖注入
【发布时间】:2014-09-17 07:33:49
【问题描述】:

我在我的 Web 应用程序中使用 Ninject,作为其中的一部分,我需要在位于单独程序集中的 UrlHelper 扩展方法中进行一些注入。我什至无法获得对内核的静态引用,因为显然库程序集不能(也不应该)引用我的 Web 应用程序。我知道静态类不能很好地与 DI 一起使用,但是因为我需要使用 UrlHelper,所以它使事情变得更加复杂。我怎么能重新架构这个?如果您需要查看任何代码或需要更多信息,请告诉我。

【问题讨论】:

  • 为什么需要将值注入静态方法?难道你不能将这些值注入到调用UrlHelper的类中,并使用这些注入的值来调用方法,而不是直接调用静态(扩展)方法吗?

标签: c# dependency-injection ninject


【解决方案1】:

您是否将非静态类视为静态 UrlHelper 类的 DI 友好包装器?

public class DynamicUrlHelper
{
  private readonly ISomeDependency dep;
  public DynamicUrlHelper(ISomeDependency dep)
  {
    this.dep = dep;
  }
  public Uri DoMagic(Uri uri)
  {
    return uri.DoMagic(this.dep);
  }
}
public interface ISomeDependency
{
}
public static class UrlHelper
{
  public static Uri DoMagic(this Uri uri, ISomeDependency dep)
  {
    // do it!
    return uri;
  }
}

您可以将必要的值注入 DynamicUrlHelper 并在需要的任何地方注入 DynamicUrlHelper

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-26
    • 2014-01-19
    • 2014-03-25
    • 2019-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多