控制器服务依赖性注入问题-Asp.net Framwork

时间:2018-08-02 22:07:47

标签: c# asp.net asp.net-mvc dependency-injection

你好,我试图在应用程序启动时实例化一个类,然后通过依赖注入到控制器来共享该实例。由于某种原因,它不会让我使用带有参数的Controller构造函数。它给出了错误:

  

[MissingMethodException:没有为此定义的无参数构造函数   对象。]

  

[InvalidOperationException:尝试创建一个   类型为“ Project1.Controllers.HomeController”的控制器。使   确保控制器具有无参数的公共构造函数。]

我找到了几个有类似问题的人,但我一直无法弄清楚到底是什么问题。

我还省略了一些无关的代码(为什么它看起来并不像该代码实际做任何有用的事情)。

Startup.cs

using Project1.Services;

[assembly: OwinStartup(typeof(Project1.Startup))]

namespace Project1
{
    public class Startup
    {
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddSingleton<IPackageScraperService>(new PackageScraperService());
        }

        public void Configuration(IAppBuilder app)
        {
        }
    }
}

IPackageScraperService.cs

using Project1.Services;

namespace Project1.Services
{
    public interface IPackageScraperService
    {
        List<PackageScraperService.Script> GetLoadedScripts();
    }
}

PackageScraperService.cs

namespace Project1.Services
{
  public class PackageScraperService : Services.IPackageScraperService
  {
      public class Script
      {
          public FileAttributes Attibutes { get; set; }

          public string Text { get; set; }
      }


      public List<Script> Scripts;

      public List<Script> GetLoadedScripts()
      {
          return Scripts;
      }   
  }

HomeController.cs

using Project1.Services;

namespace Project1.Controllers
{
    public class HomeController : Controller
    {
        private IPackageScraperService _packageScraperService;

        public HomeController(IPackageScraperService packageScraperService)
        {
            _packageScraperService = packageScraperService;
        }

        public ActionResult Index()
        {
            return View();
        }
    }

}

对于其他需要文档的人,本教程对我有用。

http://scottdorman.github.io/2016/03/17/integrating-asp.net-core-dependency-injection-in-mvc-4/

0 个答案:

没有答案