如何在构造函数中解析循环依赖接口

时间:2019-10-04 07:40:30

标签: c# asp.net-core

Query query = userStatsDatabase..orderByChild("Weight/Month");
query.addListenerForSingleValueEvent(new ValueEventListener() {
  @Override
  public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
    for (DataSnapshot monthSnapshot: dataSnapshot.getChildren()) {
      System.out.println(monthSnapshot.getKey()); // August, September, October
      System.out.println(monthSnapshot.child("Weight/Month").getValue(Long.class)); // 8, 9, 10
    }
  }
  ...

///////////////////////////////////////////////// ///////////////////////////////////////////////////// ///////////////////////

public class Logger : ILogger
{
    private readonly ILoggerHandler LoggerH;      
    public Logger(ILoggerHandler _LoggerH)
    {
        LoggerH = _LoggerH;           
    }


    public async Task exception(LogObj _log)
    { 
        await LoggerH.Log(_log); // Called ILoggerHandler Method
    } 
}



public interface ILogger
{      
    Task exception(LogObj _log);       
}

///////////////////////////////////////////////// ///////////////////////////////////////////////////// ///////////////////////////////

public interface ILoggerHandler
{
    Task Log(LogObj log);
}



public class LoggerHandler: ILoggerHandler
{

    private readonly IAPIHandler _apiHandler;


    public LoggerHandler(IAPIHandler apiHandler)
    {
        _apiHandler = apiHandler;

    }



    public async Task Log(LogObj log)
    {
        try
        {               
     var request = JsonConvert.SerializeObject(log);                
     await _apiHandler.Process(request, url, HttpMethode.POST, _headers); // Called IAPIHandler Method
        }
        catch (Exception ex)
        {

        }
    }     

}
  1. ILogger 由方法 exception 组成,该方法在代码中出现异常时记录错误
  2. ILogger 中的
  3. 例外方法调用该方法登录 ILoggerHandler 哪个调用日志服务
  4. ILoggerHandler 调用 IAPIHandler 以调用服务
  5. 要再次在 IAPIHandler 中记录异常,将调用 ILogger 异常方法

所以这导致循环依赖,因此需要帮助来解决

0 个答案:

没有答案