Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .NET Core 2-从启动时调用存储库方法_C#_Asp.net Core_.net Core_Asp.net Core 2.0 - Fatal编程技术网

C# .NET Core 2-从启动时调用存储库方法

C# .NET Core 2-从启动时调用存储库方法,c#,asp.net-core,.net-core,asp.net-core-2.0,C#,Asp.net Core,.net Core,Asp.net Core 2.0,我有以下存储库和类 public interface IValueService { GetAll(); } public class ValueService : IValueService { private DataContext _context; public ValueService(DataContext context) { _context = context; } public Ge

我有以下存储库和类

public interface IValueService
{
    GetAll();
}

public class ValueService : IValueService
{
    private DataContext _context;

    public ValueService(DataContext context)
    {
        _context = context;            
    }

    public GetAll()
    {
       // do something
    }
}
在我的Startup.cs

services.AddScoped<IValueService, ValueService>();
services.addScope();
如何从Startup或其他类调用GetAll()方法

编辑:以英文回答

要调用
GetAll()
,无论在何处,都需要先有一个实例。因此,如果要在
Startup.cs
中调用它,必须先创建一个对象,然后调用它

对于其他类调用
GetAll()
,需要将
IValueService
指定为构造函数的参数之一,然后在构造函数中,将
IValueService
实例保留在本地私有属性中。这个私有属性可以在同一类中的其他方法中使用


对于.NetCore 2依赖项注入,请单击以获取更多详细信息。

在要使用的控制器或类中添加以下代码:

public class MyController : Controller
{
    private readonly IValueService _valueServiceRepository;

    public MyController (IValueService _valueServiceRepository)
    {
        _valueServiceRepository = valueServiceRepository;
    }

}

现在您可以使用_valueServiceRepository.GetAll()。

您应该首先新建您的类

ValueService VS=new ValueService();
VS.GetAll(); 
如果不想新建类,可以使用“static”


这篇文章可能有助于:

基本上,要向启动注入一些服务,您需要先调用
ConfigureServices
,然后在
WebHostBuilder()中调用
UseStartup

var host = new WebHostBuilder()
.ConfigureServices(servicesCollection =>
{
    servicesCollection.AddSingleton<IValueService>(new ValueService(context));
})
.UseStartup<Startup>()
.Build();

来自另一个班级?通过构造函数注入注入
IValueService
,并使用它。看一看,这基本上是你几分钟前提出的同一个问题,在这个问题上获得否决票没有什么错。如果是的话,请分享你的评论,这样作者就可以改进这个问题。@DavidG是的,还是同样的问题-如果你能给我指出正确的方向,那就太好了。据我所知,从前端调用控制器。但是,我只需要知道如何在不使用控制器/前端的情况下调用这些方法。您已经获得了一些链接,现在由您去学习。请不要这样做,使用专门用于此目的的DI框架。
var host = new WebHostBuilder()
.ConfigureServices(servicesCollection =>
{
    servicesCollection.AddSingleton<IValueService>(new ValueService(context));
})
.UseStartup<Startup>()
.Build();
    public class Startup
    {
        public Startup(IConfiguration configuration, IHostingEnvironment env, IValueService service)
        {
           //service.GetAll();
        }
    }