2017-09-26 52 views
-1

我的服务是运行时生成的。我需要从生成的服务生成控制器。 PreInitialize方法在首次运行时运行。我需要它在运行时从我的方法中调用。我怎样才能组织它?如何在主机运行后调用preInitialize方法?

+0

aspnetboilerplate自动为每个appservice创建控制器。 PreInitialize()在模块类中。无论何时载入模块,它都由aspnetboilerplate执行。我猜你对自己在做的事情是错误的。写下你正在尝试解决的目标任务,我们会向你推荐一些其他解决方案。 –

+0

我有微服务。我的微服务负责其他服务之间的连接。这项服务必须在我的微服务中注册。在注册期间,他们提供有关它们的函数(API调用)的信息,并基于此我必须为Boilerplate生成我的AppServices(运行时)。问题是,我猜我们必须在主机运行期间调用PreInitialize和Initialize方法一次,然后在生成AppServices时从注册函数调用。 –

回答

0

ASPNET核心调查在应用程序启动控制器。所以,我知道你不能在应用程序启动后添加控制器。

0

看来你在说的是自定义IServiceProvider的实现。

您可以使用自己只是在Startup改变方法签名:

public IServiceProvider ConfigureServices(IServiceCollection services) 
+0

我在配置服务中使用此签名。 public IServiceProvider ConfigureServices(IServiceCollection services) { services.AddMvc(); return services.AddAbp (); } –

+0

但我的问题不是关于那个服务。我有一些在样板中调用AppServices的类,我的类是运行时生成的。 –

+0

如果你实现自己的'IServiceProvider',你可以实现任何实例化/返回实例的规则,包括运行时类的生成和月相检测。 – Dmitry