这是我在构建一些数据层时最终得到的类:
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)
我需要请求知道响应,因为它填充了数据; 我需要响应以了解请求,因为当我将响应传递给其他一些方法时,我希望能够访问原始请求.
您是否看到此架构存在任何潜在问题,例如内存泄漏等,还是仅仅是一个糟糕的设计理念?
这看起来并不太邪恶,但你也可以创建一个"DataContext"(因为想要一个更好的词),它既暴露了请求又响应了,只让每个人知道上下文?即询问响应会询问的请求:
this.Context.Request.SomeProperty;
Run Code Online (Sandbox Code Playgroud)
但这不是记忆问题; .NET不进行引用计数,因此您不必担心循环引用岛.如果它们都无法从其他对象访问,它们将被收集.问题中的情景不会导致世界结束.