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上下文一样。谢谢贾景晖,我会考虑你的想法。