Browse Source

解决循环引用问题

master
shanji 3 years ago
parent
commit
dc41bed95a
  1. 8
      Binance.TradeRobot.Business/Business/OrderPublishBusiness/Spot/D21OrderPublishBusiness.cs
  2. 7
      Binance.TradeRobot.Business/Business/RobotBusiness.cs
  3. 9
      Binance.TradeRobot.Business/Business/SingalBusiness.cs
  4. 10
      Binance.TradeRobot.Business/GlobalContext.cs

8
Binance.TradeRobot.Business/Business/OrderPublishBusiness/Spot/D21OrderPublishBusiness.cs

@ -15,9 +15,11 @@ namespace Binance.TradeRobot.Business
{ {
public Enums.TradePolicy TradePolicy => Enums.TradePolicy.D21; public Enums.TradePolicy TradePolicy => Enums.TradePolicy.D21;
public D21OrderPublishBusiness(IFreeSql fsql, NLogManager logManager, IIdGenerator idGenerator, IMemoryCache memoryCache, DingBusiness dingBusiness) : base(fsql, logManager, idGenerator, memoryCache, dingBusiness) public RobotBusiness robotBusiness;
{
public D21OrderPublishBusiness(IFreeSql fsql, NLogManager logManager, IIdGenerator idGenerator, IMemoryCache memoryCache, DingBusiness dingBusiness, RobotBusiness robotBusiness) : base(fsql, logManager, idGenerator, memoryCache, dingBusiness)
{
this.robotBusiness = robotBusiness;
} }
@ -38,6 +40,8 @@ namespace Binance.TradeRobot.Business
Content = $"收到订单推送,订单号:{spotOrderPublishInfo.OrderId},订单方向:{spotOrderPublishInfo.TradeDirection},订单类型:{spotOrderPublishInfo.OrderType},订单状态:{spotOrderPublishInfo.SpotOrderState},本次成交额:{spotOrderPublishInfo.LastTradeAmount}" Content = $"收到订单推送,订单号:{spotOrderPublishInfo.OrderId},订单方向:{spotOrderPublishInfo.TradeDirection},订单类型:{spotOrderPublishInfo.OrderType},订单状态:{spotOrderPublishInfo.SpotOrderState},本次成交额:{spotOrderPublishInfo.LastTradeAmount}"
}); });
} }
catch (Exception ex) catch (Exception ex)
{ {

7
Binance.TradeRobot.Business/Business/RobotBusiness.cs

@ -17,11 +17,12 @@ namespace Binance.TradeRobot.Business
[BatchRegistration(ServiceLifetime.Singleton, RegistrationType.Self)] [BatchRegistration(ServiceLifetime.Singleton, RegistrationType.Self)]
public class RobotBusiness : BaseBusiness public class RobotBusiness : BaseBusiness
{ {
private GlobalContext globalContext; private Lazy<GlobalContext> globalContextLazy;
private GlobalContext globalContext => globalContextLazy.Value;
public RobotBusiness(IFreeSql fsql, NLogManager logManager, IIdGenerator idGenerator, IMemoryCache memoryCache, GlobalContext globalContext) : base(fsql, logManager, idGenerator, memoryCache) public RobotBusiness(IFreeSql fsql, NLogManager logManager, IIdGenerator idGenerator, IMemoryCache memoryCache, IServiceProvider serviceProvider) : base(fsql, logManager, idGenerator, memoryCache)
{ {
this.globalContext = globalContext; this.globalContextLazy = new Lazy<GlobalContext>(() => serviceProvider.GetService<GlobalContext>());
} }
/// <summary> /// <summary>

9
Binance.TradeRobot.Business/Business/SingalBusiness.cs

@ -1,6 +1,5 @@
using Binance.TradeRobot.Common.DI; using Binance.TradeRobot.Common.DI;
using Binance.TradeRobot.Model.Base; using Binance.TradeRobot.Model.Base;
using Binance.TradeRobot.Model.Db;
using Binance.TradeRobot.Model.Dto; using Binance.TradeRobot.Model.Dto;
using Microsoft.Extensions.Caching.Memory; using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
@ -65,12 +64,12 @@ namespace Binance.TradeRobot.Business
taskSchedulerManager.SingalTaskScheduler); taskSchedulerManager.SingalTaskScheduler);
break; break;
case Enums.SingalType.: case Enums.SingalType.:
//Task.Factory.StartNew(() => d21TradeBusiness.LongCross(d21SingalRequest, robot, false, symbolInfo), Task.Factory.StartNew(() => d21TradeBusiness.LongCross(d21SingalRequest, robot, false, symbolInfo),
// CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.SingalTaskScheduler); CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.SingalTaskScheduler);
break; break;
case Enums.SingalType.: case Enums.SingalType.:
//Task.Factory.StartNew(() => d21TradeBusiness.ShortCross(d21SingalRequest, robot, false, symbolInfo), Task.Factory.StartNew(() => d21TradeBusiness.ShortCross(d21SingalRequest, robot, false, symbolInfo),
// CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.SingalTaskScheduler); CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.SingalTaskScheduler);
break; break;
} }
} }

10
Binance.TradeRobot.Business/GlobalContext.cs

@ -4,6 +4,7 @@ using Microsoft.Extensions.DependencyInjection;
using SDKAdapter.Model; using SDKAdapter.Model;
using SDKAdapter.WebSockets.Market; using SDKAdapter.WebSockets.Market;
using SDKAdapter.WebSockets.Order.Spot; using SDKAdapter.WebSockets.Order.Spot;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
@ -15,14 +16,17 @@ namespace Binance.TradeRobot.Business
private NLogManager logManager; private NLogManager logManager;
private IDictionary<string, SpotMarketWebSocketClient> spotMarketWebSocketClientDictionary; private IDictionary<string, SpotMarketWebSocketClient> spotMarketWebSocketClientDictionary;
private IDictionary<string, SpotOrderWebSocketClient> spotOrderWebSocketClientDictionary; private IDictionary<string, SpotOrderWebSocketClient> spotOrderWebSocketClientDictionary;
private IEnumerable<ISpotOrderPublishBusiness> spotOrderPublishBusinessList;
public GlobalContext(NLogManager logManager, IEnumerable<ISpotOrderPublishBusiness> spotOrderPublishBusinessList) private Lazy<IEnumerable<ISpotOrderPublishBusiness>> spotOrderPublishBusinessListLazy;
private IEnumerable<ISpotOrderPublishBusiness> spotOrderPublishBusinessList => spotOrderPublishBusinessListLazy.Value;
public GlobalContext(NLogManager logManager, IServiceProvider serviceProvider)
{ {
this.logManager = logManager; this.logManager = logManager;
spotMarketWebSocketClientDictionary = new Dictionary<string, SpotMarketWebSocketClient>(); spotMarketWebSocketClientDictionary = new Dictionary<string, SpotMarketWebSocketClient>();
spotOrderWebSocketClientDictionary = new Dictionary<string, SpotOrderWebSocketClient>(); spotOrderWebSocketClientDictionary = new Dictionary<string, SpotOrderWebSocketClient>();
this.spotOrderPublishBusinessList = spotOrderPublishBusinessList; //this.spotOrderPublishBusinessList = spotOrderPublishBusinessList;
this.spotOrderPublishBusinessListLazy = new Lazy<IEnumerable<ISpotOrderPublishBusiness>>(() => serviceProvider.GetServices<ISpotOrderPublishBusiness>());
} }
/// <summary> /// <summary>

Loading…
Cancel
Save