我有一些需要异步加载的数据。由于我无法使用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 Core的DI将其注入到必要的地方。这意味着我永远不会显式创建此类的对象,而DI框架会这样做。
第二,我需要将此MyDependency
注入到MyClass
中,并在LoadData()方法中使用它,这样可以防止LoadData()
,因此MyClassFactory()
成为static
。