gpt4 book ai didi

c# - 是否可以使用 IOC 解析 View 引擎?

转载 作者:太空宇宙 更新时间:2023-11-03 11:17:00 25 4
gpt4 key购买 nike

我有一个自定义的 ViewEngine,用于我的 MVC4 网络应用程序。

我目前在 Global.asax 中注册是这样的:

ViewEngines.Engines.Clear();
ViewEngines.Engines.Add(new CustomViewEngine());

在我的 CustomViewEngine 类中,我具有可通过我的 IOC 实现(使用 CaSTLeWindsor)获得的类的属性

目前我可以直接在 CustomViewEngine 中访问 windsor 解析器并解析它们,但我真正想做的是让 windsor 解析 ViewEngine 并免费获得所有这些位。无需明确执行。

这可能吗?我希望 ViewEngine 然后根据 WebRequest 进行解析。

最佳答案

这样的事情怎么样?

    public class DependencyViewEngine : RazorViewEngine
{
public override ViewEngineResult FindPartialView(ControllerContext controllerContext, string partialViewName, bool useCache)
{
var result = base.FindPartialView(controllerContext, partialViewName, useCache);
result.ViewEngine = // resolve view engine
return result;
}

public override ViewEngineResult FindView(ControllerContext controllerContext, string viewName, string masterName, bool useCache)
{
var result = base.FindView(controllerContext, viewName, masterName, useCache);
result.ViewEngine = // resolve view engine
return result;
}

}

然后

    ViewEngines.Engines.Clear();
ViewEngines.Engines.Add(new DependencyViewEngine());

编辑:

如何实现依赖解析器以使用您的容器?

public class CustomDependencyResolver : IDependencyResolver
{
public CustomDependencyResolver(IContainer container)
{
// ...
}

public object GetService(Type serviceType)
{
// pass resolution off to your container
}
public IEnumerable<object> GetServices(Type serviceType)
{
// pass resolution off to your container
}
}

然后

protected void Application_Start()
{
ViewEngines.Engines.Clear();
var resolver = new CustomDependencyResolver(container);
DependencyResolver.SetResolver(resolver);
}

关于c# - 是否可以使用 IOC 解析 View 引擎?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12380898/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com