这种循环依赖是一件坏事吗?任何潜在的问题?

And*_*rey 4 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; set; }

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

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

}
Run Code Online (Sandbox Code Playgroud)

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

您是否看到此架构存在任何潜在问题,例如内存泄漏等,还是仅仅是一个糟糕的设计理念?

Mar*_*ell 6

这看起来并不太邪恶,但你也可以创建一个"DataContext"(因为想要一个更好的词),它既暴露了请求又响应了,只让每个人知道上下文?即询问响应会询问的请求:

this.Context.Request.SomeProperty;
Run Code Online (Sandbox Code Playgroud)

但这不是记忆问题; .NET不进行引用计数,因此您不必担心循环引用岛.如果它们都无法从其他对象访问,它们将被收集.问题中的情景不会导致世界结束.