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();
}
}