Browse Source

使用接口替代具体实现以增强代码灵活性

将 `SessionContextCreator` 的类型更改为 `ISessionContextCreator`,在 `OrderApplication` 和 `DataSharingSubscriber` 类中使用接口。添加 `ISessionContextCreator` 接口,并在 `SessionContextCreator` 类中实现。`ISessionContextCreator` 接口包含一个异步方法 `CreateSessionContextAsync`,用于创建会话上下文。
xf 1 month ago
parent
commit
1d8e09ee26

+ 3 - 2
src/Hotline.Application/Orders/OrderApplication.cs

@@ -115,7 +115,7 @@ public class OrderApplication : IOrderApplication, IScopeDependency
     private readonly IRepository<User> _userRepository;
     private readonly IWorkflowApplication _workflowApplication;
     private readonly ICircularRecordDomainService _circularRecordDomainService;
-    private readonly SessionContextCreator _sessionContextCreator;
+    private readonly ISessionContextCreator _sessionContextCreator;
 
     public OrderApplication(
         IOrderDomainService orderDomainService,
@@ -164,7 +164,8 @@ public class OrderApplication : IOrderApplication, IScopeDependency
         IRepository<User> userRepository,
         IWorkflowApplication workflowApplication,
         ICircularRecordDomainService circularRecordDomainService,
-        SessionContextCreator sessionContextCreator)
+        ISessionContextCreator sessionContextCreator
+        )
     {
         _orderDomainService = orderDomainService;
         _workflowDomainService = workflowDomainService;

+ 2 - 2
src/Hotline.Application/Subscribers/DatasharingSubscriber.cs

@@ -82,7 +82,7 @@ namespace Hotline.Application.Subscribers
         private readonly ICalcExpireTime _expireTime;
         private readonly ISessionContextProvider _sessionContextProvider;
         private readonly ISessionContext _sessionContext;
-        private readonly SessionContextCreator _sessionContextCreator;
+        private readonly ISessionContextCreator _sessionContextCreator;
         private readonly ILogger<DataSharingSubscriber> _logger;
 
         public DataSharingSubscriber(
@@ -119,7 +119,7 @@ namespace Hotline.Application.Subscribers
             ICalcExpireTime expireTime,
             ISessionContextProvider sessionContextProvider,
             ISessionContext sessionContext,
-            SessionContextCreator sessionContextCreator,
+            ISessionContextCreator sessionContextCreator,
             ILogger<DataSharingSubscriber> logger)
         {
             _orderSendBackRepository = orderSendBackRepository;

+ 6 - 1
src/Hotline/Authentications/SessionContextCreator.cs

@@ -10,7 +10,12 @@ using XF.Domain.Dependency;
 
 namespace Hotline.Authentications
 {
-    public class SessionContextCreator : ISelfDependency
+    public interface ISessionContextCreator
+    {
+        Task CreateSessionContextAsync(string source, CancellationToken cancellation);
+    }
+
+    public class SessionContextCreator : ISessionContextCreator, IScopeDependency
     {
         private readonly ISystemSettingCacheManager _systemSettingCacheManager;
         private readonly ISessionContext _sessionContext;