Инъекция зависимости с помощью UrlHelper - PullRequest
1 голос
/ 02 января 2012

Я использую Ninject в своем веб-приложении, и как часть этого мне нужно сделать несколько инъекций в методе расширения UrlHelper, который находится в отдельной сборке. Я даже не могу получить статическую ссылку на ядро, потому что, очевидно, сборка библиотеки не может (и не должна) ссылаться на мое веб-приложение. Я знаю, что статические классы плохо работают с DI, но, поскольку мне нужно использовать UrlHelper, это немного усложняет ситуацию. Как я мог перестроить это? Дайте мне знать, если вам нужен какой-либо код или вам нужна дополнительная информация.

1 Ответ

4 голосов
/ 03 января 2012

Рассматривали ли вы нестатический класс как DI-дружественную оболочку для статического UrlHelper класса?

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 в любое место.

...