2013-08-07 106 views
0

我有一個助手類,我用它來在我的程序中的圖層之間傳遞。這個類的特點之一是,如果底層出現錯誤,它會返回。它還通過層傳回與例程相關的數據(即返回數據庫表,字符串,整數等)。目前我通過對象類型添加數據。被調用程序需要知道返回的數據類型。 我的問題是,有沒有辦法返回對象,以及它是什麼類型的數據?以及我將如何存儲類型描述符?有沒有辦法知道返回的對象是什麼?

目前這是怎麼實現的是:

這是(也沒有一個錯誤的數據庫例程)較低級別的例子:

 return new MyHelper() 
      .AndAddObjectToReturn(rep) 
      .AndHasNoErrors(); 

這個氣泡達這確實被調用的代碼如下:

 ..... 
     if (contactidHelped.HaveNoErrors()) 
     { 
      repContact contact = (repContact) contactidHelped.GetAttachedDataObject(); 
      .... 
     } 

我想做的事是被調用例程,是因爲它是無知,如果數據類型,做這樣的代碼:

 ..... 
     if (contactidHelped.HaveNoErrors()) 
     { 
      repContact contact = contactidHelped.GetAttachedDataObject(); 
      .... 
     } 

,這樣的預期目標是它所需要的。

+0

這個怎麼樣? '無功接觸= contactidHelped.GetAttachedDataObject();' –

+0

喜..這將與字符串和整數的工作,但我主要是在課堂上映射回類型屬性。例如:newgroup.ProductTypeOfGroupItemLink = ....並且定義爲:public repProductTypes ProductTypeOfGroupItemLink {get;組; } ..等。 – Tony

回答

0

據我所知,你是不是能夠做一個簡單的方法。我能想到的實現類似行爲的方式是在助手類中使用類型約束。

創建具有虛擬GetAttachedDataObject返回對象類型的基Helper類(比方說MyHelper),而導出了另一類 - MyHelper<T>,它有一個方法類型T.

GetAttachedData<T>返回值當初始化/實例化幫手,實例化強類型MyHelper<T>。在來電者,你可以投你MyHelper到你想要的MyHelper<T>前期和呼叫GetAttachedData代替GetAttachedDataObject。當然,您可以進一步調整以滿足您的需求。

但這並不理想要麼 - 它仍然需要你做一些點鑄造,但我相信它可以減少鑄件的需求。

0

您可以通過簡單地把它作爲一個對象通過周圍的GetAttachedDataObject(),例如

var attachedDataObject = contactidHelped.GetAttachedDataObject(); 

然後,當你需要訪問一個特定的屬性或方法對於任何給定的對象只是檢查喜歡的類型:

if (attachedDataObject is repContact) { 
    // your code here 
} 

但是,我建議你檢查Interfaces是如何工作的,也許它會更適合你的需求。

相關問題