你好,我试图在应用程序启动时实例化一个类,然后通过依赖注入到控制器来共享该实例。由于某种原因,它不会让我使用带有参数的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/