我正在学习.NET中的设计模式,目前我正在尝试实现状态模式。但是今天我遇到了一个问题,我不知道如何解决这个问题。
我有一些状态类,它们都实现了状态接口。最后的状态之一应该通过.NET API Startup类注入的服务连接到数据库,以持久化数据并完成该过程。
问题是...因为依赖注入我需要处于最终状态,我无法示例化此状态对象以前进到这一点。我不知道如何从那里继续。我不知道是我使用了错误的模式还是在此模式中使用了依赖注入。我不能给予问题的所有细节,因为我的研究“的项目目前有点混乱,所以我快速模拟了一下我试图在应用程序中构建的结构。
状态接口和将执行状态行为的OperatingClass:
第一个
主要服务:是我的控制器在接收API Post方法后调用的服务:
public class MainService
{
public int ExecuteFullOperation(int id)
{
//Receives an id and execute the state transition till the end;
var operatingClass = new OperatingClass(id);
return operatingClass.Execute();
}
}
表示状态并执行相应操作的类:
第一个
其他信息:我将PersistenceService作为Transient注入Startup.cs中(此时我不知道如何以其他方式进行)。
public void ConfigureServices(IServiceCollection services)
{
services.AddTransient<IPersistenceService, PersistenceService>();
// Irrelevant configurations for the question.
services.AddControllers();
}
如果可以的话,请帮助我。我自己很难弄清楚。谢谢你的耐心和你的时间阅读它。
1条答案
按热度按时间sc4hvdpw1#
首先,我们需要一些简单的工厂,它将按照类型提供所有必要的依赖关系。
和简单的工厂:
然后我们应该注册所有依赖项:
我们的状态如下所示:
MiddleState
看起来像这样:Final state
应该如下所示:其他类(如OperatingClass)也将使用
StateFactory
:在此基础上,给出了一个基于类的操作系统的设计方法。{1}获取一个公共的整数id {2}{3}。{4} set; }公共双精度值{ get;设置; }
并且有必要创建
PersistenceService
的具体示例: