Как выполнить вызов метода Initialize службы с помощью Microsoft DIC#

Место общения программистов C#
Ответить
Anonymous
 Как выполнить вызов метода Initialize службы с помощью Microsoft DI

Сообщение Anonymous »

В прошлом я использовал другую платформу DI, теперь мне нужно использовать платформу Microsoft (.NET Core 3.0), и мне нужно вызвать метод InitializeAsync, когда используется служба (это синглтон, поэтому у меня есть только один экземпляр во всем приложении). Я не хочу выполнять такую ​​операцию в конструкторе, поскольку он должен вызывать веб-API, и я также не хочу помещать переменную внутри метода, который реализует служба, и проверять, инициализирована ли она только что.< /p>
Вы можете рассмотреть следующий фрагмент кода

Код: Выделить всё

  class Program
{
static void Main(string[] args)
{
using IHost host = CreateHostBuilder(args).Build();

ExemplifyScoping(host.Services, 1);
ExemplifyScoping(host.Services, 88);

host.RunAsync();
}

private static void ExemplifyScoping(IServiceProvider hostServices, int scope)
{
var service = hostServices.GetService();

var str =  service.PerfomSomething(scope);

Console.WriteLine($"RES : {str}");

}

static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureServices((_, services) =>
{
services.AddTransient();

}
);
}

и упрощенный класс обслуживания

Код: Выделить всё

    public class DummyService : IDummyService
{
private IDictionary _dictionary;
public Task InitializeAsync()
{
_dictionary = new Dictionary();

_dictionary.Add(1,"1");
_dictionary.Add(2,"2");
_dictionary.Add(3,"3");
_dictionary.Add(4,"4");

return  Task.CompletedTask;
}

public string PerfomSomething(int id)
{
if (_dictionary.ContainsKey(id))
return _dictionary[id];

return string.Empty;
}
}

public interface IDummyService
{
Task InitializeAsync();

string PerfomSomething(int id);
}
Я видел, что в инфраструктуре DI есть метод PostConfigure, но я не знаю, нужно ли его использовать.
Есть совет?
Спасибо

Подробнее здесь: https://stackoverflow.com/questions/700 ... crosoft-di
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»