在我目前的项目中,一个电路绘图程序,我从同一个基类中派生出许多类。
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
由于
答案 0 :(得分:4)
如果您的类具有无参数构造函数:
c(1) = Activator.CreateInstance(Type.GetType("MyNamespace." & cls))
显然,MyNamespace.
应该酌情替换。
答案 1 :(得分:0)
您需要专门使用反射和Activator.CreateInstance来执行此操作。走向反射路径是危险的,并且通常会带来更多麻烦而不是带来好处。在大多数情况下,有一种更好的方法来设计您的应用程序。
在您的特定情况下,您可以使用图标字典,字符串到图标匹配,然后只需要clsCompo的构造函数指定您想要的图标作为参数。除非你将继承用于其他事情,否则这应该完全解决你的问题,而不必使用反射。