gpt4 book ai didi

c# - 在运行时从另一个程序集加载 Controller

转载 作者:太空宇宙 更新时间:2023-11-03 19:14:54 26 4
gpt4 key购买 nike

在我的主 Web 程序集项目中,在 global.asax 中注册路由之前,我加载了许多外部程序集。其中一些程序集具有 MVC Controller 和内部 View 。

我的问题是这些外部 Controller 由于某种原因没有被拾取,我假设 Controller 注册发生在我的程序集加载之前的某个地方,因为如果我在应用程序启动之前引用我的程序集(bin 文件夹中的 dll)一切正常。

所以我想知道有没有

  • 一种控制何时注册 mvc Controller 的方法,以便我可以在加载所有程序集后执行此操作?或者
  • 一种注入(inject)我的外部 Controller 的方法?

我之前遇到过与 WebAPI Controller 类似的问题,我可以使用我的自定义 HttpControllerSelector 修复它,但我还没有在 MVC 中找到任何类似的东西。

最佳答案

能够通过覆盖 DefaultControllerFactoryCreateController 方法解决问题:

应用程序启动:

IControllerFactory factory = new ControllerFactory();
ControllerBuilder.Current.SetControllerFactory(factory);

Controller 工厂:

public class ControllerFactory : DefaultControllerFactory
{
public override IController CreateController(RequestContext requestContext, string controllerName)
{
IController controller = null;
Type controllerType;
if (ControllerTypes.TryGetValue(controllerName.ToLower(), out controllerType))
{
controller = (IController) Activator.CreateInstance(controllerType);
}
return controller;
}
...
}

ControllerTypes 是来自外部程序集的我的 MVC Controller 的字典。

关于c# - 在运行时从另一个程序集加载 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17708081/

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