看到标题,大部分会说“运行时创建对象”那不是小儿科,就这样: Dim newButton As Button = New Button() newButton.Name = "Button1" 这的确是在运行时创建了一个按钮。不过若需按照用户要求创建按钮、复选框或者单选框怎么办,好像也好办: Dim newControl As Control Select Case userSelection Case "按钮" newControl = New Button() Case "复选框" newControl = New CheckBox() .... End Select 如果用户需要的是Windows.Forms里面的数十种控件,那么你的Select语句也要写数十行吗?我当然不是想要做这种刁难的用户,但是需求总是多种多样的,若有一种方法能够在运行时任意指定对象的创建类型,甚至是用表示类型的名字的字符串创建所需的对象,该有多么方便。.net Framwork的反射机制给我们带来了解决问题的方法。这里,若只需要创建一般的对象,我们可以通过System.Activator来实现,而较复杂的我们可以通过获取构造方法来实现。 反射Reflection是.net中重要机制,很多人已经介绍过反射,我们来简单复习一下。通过反射,可以在运行时获得.net中每一个类型(包括类、结构、委派、接口、枚举)的成员,包括方法、属性、事件以及构造函数等,还可以获得每个成员的名称、限定符和参数等,有了反射,就可以对每一个类型了如指掌。如果获得了构造函数的信息,就可以直接创建对象,即使这个对象的类型在编译的时候还不知道。 在完成运行时创建控件这一任务前,我们先看一个简单的例子,建立一个名为VBAppliction的Windows程序,添加一个新文件,输入一个新类: Public Class MyClassTest Private MyField As String Public Sub New() MyField = "Hi!" End Sub Public Sub Hello() Console.WriteLine(MyField) End Sub End Class |
正在阅读:.net中实现运行时从字符串动态创建对象.net中实现运行时从字符串动态创建对象
2004-02-14 09:34
出处:CSDN
责任编辑:linjixiong
键盘也能翻页,试试“← →”键