Чем отличаются AddScoped, AddTransient и AddSingleton

89
26 августа 2021, 04:00

Я хочу проверить, чем отличаются AddScoped, AddTransient и AddSingleton. Для этого создал сервис и два субсервиса, чтобы сравнить их хешкоды. Но что-то не пойму, как мне теперь вызвать эти сервисы, используя Dependency Injection?

Для отправки mutation-запросов использую GraphQL и Altair.

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);
                        // Как мне вызвать сервисы, используя 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)
    {
        services.AddScoped<AppMutation>();
        services.AddScoped<MainService>();
        services.AddScoped<SubService1>();
        services.AddTransient<SubService2>();
    }
}
READ ALSO
Реализация мини-бэкап программы C#

Реализация мини-бэкап программы C#

Задача: реализовать мини программу по бекапу определенной директории определенного диска

118
Разница между конфигурациями Debug и Release в VS

Разница между конфигурациями Debug и Release в VS

Мне известно назначение каждой конфигурации и то, что в Release проводится оптимизация, а в Debug машинный код полностью соответствует написанному...

153
C#. Передать дату в формате YYYY-MM-DDTHH:MM:SS в DateTime, не в string

C#. Передать дату в формате YYYY-MM-DDTHH:MM:SS в DateTime, не в string

Не получается передать дату в формате YYYY-MM-DDTHH:MM:SS в DateTime, не в stringПробовала DateTime перевести в

156
Сортировка в структуре c#

Сортировка в структуре c#

Нужно упорядочить записи по возрастанию номера группа с помощью интерфейса IComparer, а также сделать добавление данных в массив без ввода с клавиатурыЯ...

99