2015-09-21 202 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