Как мы инициализируем переменные в инъекции зависимостей ASP.NET Core? - PullRequest
0 голосов
/ 07 сентября 2018

Я переношу свое приложение на .Net Core, поэтому ранее я использовал Simple Injector, но пытаюсь перейти на встроенный DI .Net Core.

У меня есть такой интерфейс,

public interface ICheckPeriod
{
   int Max { get; set; }
   int Seed { get; set; }
}

Итак, используя SI, я сделал так,

RegisterInitializer<ICheckPeriod>(checkPeriod =>
{
    checkPeriod.Seed = 2;
    checkPeriod.Max = 7;
});

Что эквивалентно этому в DI ядра ASP.NET?

Ответы [ 2 ]

0 голосов
/ 07 сентября 2018

Эквивалентным решением в ядре DI было бы зарегистрировать класс как одиночный

public interface ICheckPeriod
{
    int Max { get; set; }
    int Seed { get; set; }
}

public class CheckPeriod : ICheckPeriod
{
    public int Max { get; set; }
    public int Seed { get; set; }
}

var checkPeriod = new CheckPeriod { Max = 2, Seed = 7 };
services.AddSingleton<ICheckPeriod>(checkPeriod);
0 голосов
/ 07 сентября 2018

Я не уверен, как вы используете это, но вы можете просто создать реализацию со значениями по умолчанию и внедрить ее.

public interface ICheckPeriod
{
    int Max { get; set; }
    int Seed { get; set; }
}

public class CheckPeriod : ICheckPeriod
{
    public int Max { get; set; } = 2;
    public int Seed { get; set; } = 7;
}

services.AddTransient<ICheckPeriod, CheckPeriod>();
...