我试图让开发人员在特定的执行点上扩展我的代码。允许代码在特定点注入的设计模式
我的具体示例是数据库事务包装器。这个包装器负责处理我们想要从开发人员那里抽象出来的许多细节,并用于多个项目。
然而,每个项目都有一些他们想在交易过程中自动执行的事情。我想添加拦截点,每个项目可以设置运行代码。
例如,我们数据库中的每个表都有一个输入日期字段,每次记录更改时都会更新一个输入日期字段。然而,我们希望所有日期对于一个事务来说都是相同的,无论多少记录被触及(即4个记录表A,1个记录在表B中,...)。
我的想法是定义拦截点“TransactionStarting”,“TransactionStarted”,“StatementExecuting”,“StatementExecuted”,...并传递一个上下文对象到每个点。
然后,项目可以定义一个类“EnteredDateManager”,该类在“TransactionStarted”点期间存储当前日期,并在“StatementExecuting”点期间更新每个对象的EnteredDate属性。
我想在web/app.config文件中设置它,并允许注册多个拦截类。如果不止一个班级被注册,他们应该按照他们注册的顺序被解雇。
我正在考虑提高事件,但我想要重要的事情。我也希望能够分享不同点之间的状态。在我上面的示例中,EnteredDate属性设置在TransactionStarted点中并用于StatementExecuting点。
这是责任链模式吗? AOP?这似乎接近ASP.Net管道的工作方式,但他们使用事件,并不保证排序,据我所知。
任何方向/示例都会很棒。
谢谢