0

我在这里有点困惑,为什么即使没有注册,我使用 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 中没有注册;但是,代码仍然可以完美运行。

我错过了什么?

4

0 回答 0