Я хочу проверить, как отличаются AddScoped
, AddTransient
и AddSingleton
. Для этого я создал сервис и два субсервиса для сравнения их хеш-кодов. Но я не понимаю, как я могу вызвать эти сервисы с помощью Dependency Injection?
MainService.cs
public class MainService
{
public MainService(SubService1 s1, SubService2 s2)
{}
}
public class SubService1
{}
public class SubService2
{}
AppMutation.cs
public class AppMutation : ObjectGraphType
{
public AppMutation(ApplicationContext data, MainService mainservice)
{
Field<AuthorType>(
"deleteAuthor",
arguments: new QueryArguments(
new QueryArgument<NonNullGraphType<IntGraphType>> { Name = "id" }
),
resolve: context =>
{
var id = context.GetArgument<int>("id");
if (data.Authors.Any(b => b.Id == id))
{
var author = data.Authors.FirstOrDefault(b => b.Id == id);
// How can I call services using Dependency Injection?
string mainServiceString = mainservice.GetHashCode().ToString();
data.Authors.Remove(author);
data.SaveChanges();
return author;
}
return null;
});
}
}
Startup.cs
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
// Here I connect services
services.AddScoped<MainService>();
services.AddScoped<SubService1>();
services.AddTransient<SubService2>();
}
}