Как мы вводим зависимость при регистрации ServiceRegistry - PullRequest
1 голос
/ 05 июня 2019

Я хотел вызвать один статический класс, в котором мне нужно передать IConfiguration, который будет вызываться при запуске

статический класс остается в слое инфраструктуры. Я не хочу добавлять ссылку в основное приложение

Startup.cs

public class Startup
{
    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public IConfiguration Configuration { get; }

    public void ConfigureContainer(ServiceRegistry services)
    {
        services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
        services.Scan(scan =>
        {
            scan.TheCallingAssembly();
            scan.WithDefaultConventions();
            scan.SingleImplementationsOfInterface();
            scan.LookForRegistries();
        });
    }
}

Я не хочу добавлять ссылку на слой инфраструктуры в основное вызывающее приложение (в данном случае это веб-приложение)

Мне нужно передать объект IConfiguration класса SomeRegistry, который остается на уровне инфраструктуры В следующем коде я всегда получаю конфигурацию как ноль

SomeStaticRepository.Initialize - это статический класс, в котором я присваиваю значения, и в моем требовании я собираюсь напрямую вызывать статический класс.

SomeRegistry.cs

public class SomeRegistry : ServiceRegistry
{
    public SomeRegistry()
    {
        //.......Repo Layers DI registration
        Container container = new Container(this);
        IConfiguration configuration = container.TryGetInstance(); // I am always getting "null"
        SomeStaticRepository.Initialize(configuration);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...