我在这里有点困惑,为什么即使没有注册,我使用 Simple Injector 的代码仍然可以完美运行,如果有人能提供一些见解,我将不胜感激。
基本上,我有一个典型的 3 逻辑层架构,Web API 控制器、业务服务层和数据访问服务层。我的 Web API 项目引用了业务服务项目,除了业务服务类之外,它还具有 .edmx 和生成的实体类。
我的 Web API 控制器如下所示:
public class MyController : ApiController
{
private readonly BookService bkService;
public MyController(BookService bk)
{
bkService = bk;
}
[HttpGet]
[Route("GetBooks")]
public async Task<IHttpActionResult> GetBooks()
{
var books = bkService.GetBooks();
var ret = JsonConvert.SerializeObject(books);
return Ok(ret);
}
}
业务服务是:
public class BookService : AbstractService
{
public BookService(MyContext context) : base(context)
{
}
public IQueryable<Book> GetBooks()
{
var da = new Da(ContextContainer);
return da.SelectAll<Book>();
}
}
这是我在 Startup.cs 中的内容(我正在使用 Owin 作为 Web API):
HttpConfiguration = new HttpConfiguration();
HttpConfiguration.MapHttpAttributeRoutes();
var container = new Container();
container.Options.DefaultScopedLifestyle = new AsyncScopedLifestyle();
container.RegisterWebApiControllers(HttpConfiguration);
container.Verify();
HttpConfiguration.DependencyResolver = new SimpleInjectorWebApiDependencyResolver(container);
app.UseWebApi(HttpConfiguration);
如您所见,我在 Startup.cs 中没有注册;但是,代码仍然可以完美运行。
我错过了什么?