实例化许多类

时间:2014-11-14 17:01:09

标签: vb.net oop

在我目前的项目中,一个电路绘图程序,我从同一个基类中派生出许多类。

Public MustInherit Class clsCompo

Public Class clsRelay Inherits clsCompo
Public Class clsResistor Inherits clsCompo

每个儿童班都有一个' getIcon'提供组件所需图像的功能。这些将加载到列表视图中,以便在绘图程序中使用。

是否有一种简单的方法可以实例化这些类?还有另一种方法,而不是手动实例化每个类?然后将图像添加到listview:类似于:

    Dim classes() As String = {"clsResistor", "clsRelay"}
    Dim c(1) As Object

    For Each cls As String In classes
        c(1) = New cls
        'add image to listview
    Next

我正在使用.NET 3.5

由于

2 个答案:

答案 0 :(得分:4)

如果您的类具有无参数构造函数:

c(1) = Activator.CreateInstance(Type.GetType("MyNamespace." & cls))

显然,MyNamespace.应该酌情替换。

答案 1 :(得分:0)

您需要专门使用反射和Activator.CreateInstance来执行此操作。走向反射路径是危险的,并且通常会带来更多麻烦而不是带来好处。在大多数情况下,有一种更好的方法来设计您的应用程序。

在您的特定情况下,您可以使用图标字典,字符串到图标匹配,然后只需要clsCompo的构造函数指定您想要的图标作为参数。除非你将继承用于其他事情,否则这应该完全解决你的问题,而不必使用反射。