具有依赖项注入的C#工厂模式

时间:2020-04-15 12:48:57

标签: c# asp.net-core dependency-injection factory-pattern

我有一些需要异步加载的数据。由于我无法使用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

0 个答案:

没有答案
相关问题