为什么我可以使用未直接添加到project.json中的库中的类(ASP.NET Core)

时间:2016-03-30 17:20:50

标签: c# asp.net-core

我的应用中有三个图层:Repositories -> Services -> Web。存储库和服务在VS 2015中创建为“类库(包)”(此应用程序也应在OSX / Linux上运行,这就是我必须创建这种库的原因)。我在Services to Repository中添加了依赖项。这是服务中project.json的一部分:

   "dependencies": {
      "App.Repositories": ""
  },

我在Web中添加了对服务的依赖。这是Web(MVC6)中project.json的一部分:

  "dependencies": {
    "Microsoft.AspNet.IISPlatformHandler": "1.0.0-rc1-final",
    "Microsoft.AspNet.Mvc": "6.0.0-rc1-final",
    "Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final",
    "Microsoft.AspNet.StaticFiles": "1.0.0-rc1-final",
    "Microsoft.Extensions.Configuration.FileProviderExtensions" : "1.0.0-rc1-final",
    "Microsoft.Extensions.Logging": "1.0.0-rc1-final",
    "Microsoft.Extensions.Logging.Console": "1.0.0-rc1-final",
    "Microsoft.Extensions.Logging.Debug" : "1.0.0-rc1-final",
    "App.Services": ""
  },

多亏了这一点,我可以在服务中编写类似的代码:

using App.Repositories;

namespace App.Services
{
    public class Service
    {
        public Service()
        {
            var repository = new Repository();
            repository.DoSomething();
        }
    }
}

这没关系,因为项目之间存在“引用”。但是,我也可以使用放在Web中的存储库中的类,如下所示:

using Microsoft.AspNet.Mvc;
using App.Repositories;

namespace App.Web.Controllers
{
    [Route("api/[controller]")]
    public class ValuesController : Controller
    {
        public ValuesController()
        {
            var repository = new Repository();
            repository.DoSomething();
        }
    }
}

问题:

  1. ASP.NET Core 1中的正常行为是什么?
  2. 如何防止在Web中使用来自存储库的类(或者通常在不直接添加的库之间)?

0 个答案:

没有答案