【发布时间】:2015-12-31 03:43:32
【问题描述】:
我的 web api 自托管应用程序中有一个属性,我想将它注入到我的控制器中,该属性是使用我的自定义 IoC 框架通过反射加载的,这是我的启动代码:
public CustomClass StuffInstance { get; set; }
// This method is required by Katana:
public void Configuration(IAppBuilder app)
{
ConfigureOAuth(app);
var webApiConfiguration = ConfigureWebApi();
// Use the extension method provided by the WebApi.Owin library:
app.UseWebApi(webApiConfiguration);
}
我的控制器大多是脚手架,有些像:
// PUT: api/EventTypeDescriptions/5
[ResponseType(typeof(void))]
public IHttpActionResult PutStuff(int id, int something)
{
//do stuff
//here i would like to use StuffInstance like a singleton
return StatusCode(HttpStatusCode.NoContent);
}
如何将 StuffInstance 注入我的控制器?顺便说一句,此信息将与任何制作 IoC 框架的人相关
【问题讨论】:
-
您的 IoC 使用什么?您需要将 IoC 解析器分配给配置,并创建一个代表 CustomClass 的接口。
-
它是一个自定义的东西,但我可能正在考虑使用 autofac,我可以使用我的自定义解析器以某种方式注入实例吗?
-
用什么没关系;你只需要使用一些东西。你必须注册你的控制器并在他们被请求时为它们解决依赖关系,而你在这里没有做任何类似的事情。
-
我赞成您建议我使用接口的评论,但我仍然不知道如何将实例注入我的控制器,有任何信息吗?也许是我需要阅读的信息的链接?
-
我为您添加了一个 AutoFac 示例。希望对您有所帮助!
标签: c# asp.net-web-api inversion-of-control ioc-container self-hosting