C# 这种循环依赖是一件坏事吗?有什么潜在的问题吗?

C# 这种循环依赖是一件坏事吗?有什么潜在的问题吗?,c#,architecture,C#,Architecture,以下是我在构建数据层时完成的课程: public class DataRequest { public class DataResponse { public DataResponse(DataRequest req) { Request = req; } public DataRequest Request {get; set;} // ... here go some other fields ... } public Response { get

以下是我在构建数据层时完成的课程:

public class DataRequest
{
  public class DataResponse
  {
    public DataResponse(DataRequest req) { Request = req; }

    public DataRequest Request {get; set;}
    // ... here go some other fields ...
  }

  public Response { get; set; }

  public DataRequest()
  {
    Response = new DataResponse(this);
  }

  public void Execute()
  {
     ... Get some data and fill Response object ...
  }

}
我需要请求知道响应,因为它用数据填充它;我需要响应来了解请求,因为当我将响应传递给其他一些方法时,我希望能够访问原始请求


您是否看到这种体系结构有任何潜在的问题,比如内存泄漏等,或者这仅仅是一个糟糕的设计思想

这看起来不太糟糕,但是您还可以创建一个“DataContext”(因为缺少更好的词),它同时公开请求和响应,并且只让每个人都知道上下文?i、 e.若要询问请求,响应将询问:

this.Context.Request.SomeProperty;

但这不是内存问题。NET不进行引用计数,所以您不必担心循环引用孤岛。如果它们都无法从其他对象访问,则会被收集。问题中的场景不会导致世界末日。

我认为最好让一个管理器类同时包含请求和响应属性,它将为您提供更多的控制

public class DataManager
{
   public DataRequest Request {get; set;}
   public DataResponse Response {get; set;}


  public void Excute () 
{
//do you logic here 
}

}

这基本上就是我所想的,就像ASP.NET用请求和响应对象来保持HTTP上下文一样。谢谢贾景晖,我会考虑你的想法。