首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

有没有这种动态创建类对象的技术?该如何处理

2012-01-20 
有没有这种动态创建类对象的技术?假设现在有一个学生对象的属性如下:ID,Name,Sex,Age,Tel,Address问:能否

有没有这种动态创建类对象的技术?
假设现在有一个学生对象的属性如下:
ID,Name,Sex,Age,Tel,Address

问:能否用运行时创建一个student对象,并让他有以上六个属性。
相当于做一个类工厂,根据条件生产出一个类来。

不是在工程里放一个student类,然后NEW一下。

不知道看贴的明白我的意思没?

[解决办法]
Type
[解决办法]
没听明白 为什么要创建一个student对象却不能有student类.
[解决办法]
相当于运行时动态地创建一个类。
[解决办法]
vb没有这个功能,你只能自己专门写代码来模拟。比如用recordset,等等。
[解决办法]
如果你就要这个属性的话,type就可以完成阿。非要个类,还不时提前创建,何必跟自己过不去呢
[解决办法]

探讨
如果你就要这个属性的话,type就可以完成阿。非要个类,还不时提前创建,何必跟自己过不去呢

[解决办法]
探讨
假设现在有一个学生对象的属性如下:
ID,Name,Sex,Age,Tel,Address

问:能否用运行时创建一个student对象,并让他有以上六个属性。
相当于做一个类工厂,根据条件生产出一个类来。

不是在工程里放一个student类,然后NEW一下。

不知道看贴的明白我的意思没?

[解决办法]
应该不好实现,要么事先用type xxx自定义类型创建模型,或者就是用类。知道你的意思可能属性不确定,所以在一开始无法确定是吧?可以事先预留n个。
private type xxx
t1 as x
t2 as x
t3 as x
...
end type
然后自己确定那个属性对应着哪个。

另外一个方法可以用集合或者字典。

例如:
student("Name")=xxx
student("sex")=0
...
[解决办法]
明白lz的意思了。

lz你应该用C#4.0。
[解决办法]
涉及到了类工厂了,VB应该没有这个技术,在COM里的技术里应该可以.
[解决办法]
那就写个 student类不就行了吗~
[解决办法]
探讨
引用:
明白lz的意思了。lz你应该用C#4.0。


换C#就不用在这里的问了。


引用:
涉及到了类工厂了,VB应该没有这个技术,在COM里的技术里应该可以.


有点矛盾哦! VB就是在COM里啊。

[解决办法]
能, 但vb实现和使用太麻烦, 就是一个call 地址的问题,vb不方便做
类包装的对象其实也就是c++指针概念发挥到了一个新的层次的产物
最直观的看待就是一个结构,type,加上些特别的预定义的内容,使他按照特定规则进行着貌似无限的扩展应用

实现起来就是:
1 申请一块内存
2 构造几个属性函数,要在模块里面写,或者直接用全局变量代替
3 对该对象的调用,以申请的内存地址为类似句柄一样的东西,实际就是this(me)指针
4 将所有该类函数,属性,等方法的函数地址和变量索引复制到 this+0,4,8,12。。 4整数倍位置
5 。。。 调用 调用函数A,可能的方法就是 call (This+4)

我一再对自己的文字表述水平表示怀疑。。。 希望lz能看懂则凑合看,看不懂就算了,我都快说迷糊了
[解决办法]
可以,使用CreateDispTypeInfo和CreateStdDispatch函数。
[解决办法]
做一个函数,按参数构造出一个类对象实例并返回该对象即可
[解决办法]
没有现成的方法,
楼上的兄弟们也出了不少点子,
总之就是绕着弯子模拟实现,数组,行集之类的都可以尝试看看

热点排行