2015-09-21 258 views
0

有沒有什麼辦法可以隨時創建類實例並在以後引用它們?我有一個類,其中包含各種方法和屬性,用於保存&計算產品數據。我希望應用程序能夠根據用戶需要處理儘可能多的單個產品。這顯然代碼將無法正常工作,但它應該給你要問什麼,我的想法:動態創建類實例

For x = 1 To howEverMany 

    Dim product_ & x.ToString() As New myProductClass 

Next x 

我很欣賞這未必是最好的方法(我也許應該使用列表或數組來保存產品數據),但我很好奇從技術的角度來看這是否可能。我使用VB.Net,但任何.Net語言的答案都會受到歡迎。謝謝。

+0

當然,這是可能的。例如,如果您的類存儲在另一個.NET程序集中,則可以反映該程序集並實例化該類並引用它,並在以後再調用它。但你需要給我們更多的信息。這些類是否在您現有的項目中?你可能想要使它更多OO,並有一些工廠方法根據參數創建正確類型的類。 –

+0

使用數組而不是'product_X'? – MicroVirus

+0

謝謝。最主要的是,需要的類的實例數是可變的 - 用戶可能需要任何數字,我需要能夠調用方法並設置這些不同類實例中的任何一個的屬性。具體來說,用戶從未知數量的Excel文件加載數據,我想知道是否在技術上可行(即使不是理想的)來實例化表示每個工作簿中的數據的類。該類已在我的項目中定義。 – Absinthe

回答

0

將它們存儲在List(Of T)中。然後,您可以LINQ列表中的一個或多個對象。

'class level 
Private Products As New List(Of myProductClass) 

'place where you load them 
For x As Integer = 1 To howEverMany 
    Dim myc As New myProductClass 
    mpc.Id = x 
    'set other properties as needed 
    Products.Add(mpc) 
Next 

獲得一個由它的ID:

Dim mpc4 = (From p In Products Where p.Id = 4).FirstOrDefault 
If Not mpc4 Is Nothing Then 
    'object exists 
End If 

您可以在列表中進行其他類似的查詢也是如此。

+0

輝煌而簡單,謝謝:) – Absinthe

+0

歡迎您=) – OneFineDay