У меня есть некоторые данные, которые мне нужно загрузить асинхронно в моем классе. Поскольку у меня не может быть конструктора async
, я попытался реализовать шаблон фабрики следующим образом:
public class MyClass
{
private string someData;
private readonly IMyDependency md;
public MyClass(IMyDependency md)
{
this.md = md;
}
public async Task<MyClass> MyClassFactory()
{
string data = await LoadData();
return new MyClass(data);
}
private MyClass(string data) { someData = data; }
private async Task<string> LoadData()
{
await md.GetSomeData();
}
}
Я понимаю, что формально шаблон фабрики предполагает, что мой MyClassFactory()
равен static
и что Я называю это явно для создания MyClass
объектов.
Мои проблемы с этим заключаются в следующем:
Во-первых, MyClass
является зависимостью для других модулей, и я использую ASP. NET DI ядра, чтобы внедрить его, где это необходимо , Это означает, что я никогда не создаю явно объекты этого класса, это делает инфраструктура DI.
Во-вторых, у меня есть MyDependency
, который мне нужно вставить в MyClass
, и я использую его в LoadData () метод, который предотвращает LoadData()
, и, следовательно, MyClassFactory()
будет static
.