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