2010-02-17 33 views
4

這裏是我結束了,同時建立一些數據層的類:這是循環依賴壞事?任何潛在的問題?

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 ... 
    } 

} 

我需要請求意識到響應的,因爲它與數據填充它;我需要響應需要注意的請求,因爲當我通過應對一些其他的方法我想有機會獲得原始請求。

你看到這個建築的任何潛在的問題,如內存泄漏等,或者是它只是一個糟糕的設計理念?

回答

6

這看起來太邪惡了,但你也可以創建一個「的DataContext」(對於一個更好的詞想)暴露請求和響應,只讓每個瞭解上下文?即詢問應答會詢問的請求:

this.Context.Request.SomeProperty; 

雖然這不是內存問題; .NET不做引用計數,所以你不需要擔心循環引用的問題。如果他們是從其他物體所有可達,他們會得到收集。問題中的情景不會導致世界結束。

+0

這基本上是我在想什麼,就像ASP.NET保持帶請求和響應對象的HttpContext。 – tvanfosson 2010-02-17 16:25:39

+0

感謝馬克,我會考慮你的想法 – Andrey 2010-02-17 16:25:55

1

我覺得這是更好地做一個管理器類持有請求和響應特性,它會給你omore控制比這

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


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

}