使用UrlHelper进行依赖注入

本文关键字:依赖 注入 UrlHelper 使用 | 更新日期: 2023-09-27 18:19:11

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

使用UrlHelper进行依赖注入

您是否考虑将非静态类作为静态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任何需要的地方。