【发布时间】:2015-05-15 14:56:13
【问题描述】:
我不确定这是否可能,但可以。我正在使用 Simple Injector 并将我的服务接口注入我的 apiControllers。一切都好。
我有 1 个可以使用不同 url 调用的控制器,例如可以使用这些 url 中的每一个来调用它
http://localhost/api/company
http://localhost/api/contact
http://localhost/api/cabbage
现在我需要知道最后一个词是什么,并在我的服务中使用它。
目前我有一个简单的界面,像这样
public interface IMyService() {
MyObject Get(long id);
}
然后是我实现服务的基本服务
public class MyService : IMyService {
private IDbContext _context;
public MyService(IDbContext context) {
_context = context;
}
public MyObject Get(long id) {
// here i need that word!!
return _context.Database.RawQuery("SELECT * FROM something WHERE Id = " + id);
}
}
现在我的通用 api 控制器看起来像这样
[RoutePrefix("api/{myword}")]
public class MyController() {
private IMyService _service;
public MyController(IMyService service) {
_service = service;
}
public Get(long id) {
var model = Mapper.Map<ObjectModel>(_service.Get(id));
return Ok(model);
}
}
我认为如果我可以将这个词直接注入到我的服务中,那将是最好的。所以我必须将服务构造函数更改为这样
public MyService(IDbContext context, string theWord) {
_context = context;
// now I can store the word and use it in my service
}
我是 Simple Injector 的新手,所以不确定是谁,或者是否可以根据每个 Web 请求注入该词?所以每次创建控制器时,都会注入一个新的服务,但这个词可能会有所不同......
这可能吗,或者有人知道有更好的方法吗?
正如我所说,我正在使用 C#、ASP.NET WebApi 和 Simple Injector。
【问题讨论】:
标签: c# .net asp.net-web-api dependency-injection simple-injector