使用UrlHelper进行依赖注入

时间:2012-01-02 19:59:57

标签: c# dependency-injection ninject

我在我的网络应用程序中使用Ninject,作为其中的一部分,我需要在UrlHelper扩展方法中进行一些注入,该方法驻留在单独的程序集中。我甚至无法获得对内核的静态引用,因为显然库程序集不能(也不应该)引用我的Web应用程序。我知道静态类与DI不兼容,但因为我需要使用UrlHelper,所以它会使事情变得复杂一些。我怎么能重新构建这个?如果您需要查看任何代码或需要更多信息,请与我们联系。

1 个答案:

答案 0 :(得分:4)

您是否认为非静态类是静态 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