有没有这种动态创建类对象的技术?解决方案
有没有这种动态创建类对象的技术?
假设现在有一个学生对象的属性如下:
ID,Name,Sex,Age,Tel,Address
问:能否用运行时创建一个student对象,并让他有以上六个属性。
相当于做一个类工厂,根据条件生产出一个类来。
不是在工程里放一个student类,然后NEW一下。
不知道看贴的明白我的意思没?
------解决方案--------------------
Type
------解决方案--------------------
没听明白 为什么要创建一个student对象却不能有student类.
------解决方案--------------------
相当于运行时动态地创建一个类。
------解决方案--------------------
vb没有这个功能,你只能自己专门写代码来模拟。比如用recordset,等等。
------解决方案--------------------
如果你就要这个属性的话,type就可以完成阿。非要个类,还不时提前创建,何必跟自己过不去呢
------解决方案--------------------
++
------解决方案--------------------
帮你想2个办法:
第一个办法:做一个表格式的文本框控件OCX,这个文本框有6个值,分别是学生的ID,Name,Sex,Age,Tel,Address。
第二个办法:定义1个基础数组ID,Name,Sex,Age,Tel,Address,数组也是可继承的。需要时取得数组首地址即可。以上只是想法,能否实现,靠自己了!
------解决方案--------------------
应该不好实现,要么事先用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类不就行了吗~
------解决方案--------------------
我的意思是VB不但是一种过于简单的编程语言,而且已经相当过时了。这就是说,让VB实现复杂的特性,让VB不堪重负,讨论各种超出VB设计之初期望目标之外的小技巧有没有意义。
今天花了很多时间学习、研究出一个VB本身不支持的特性,明天解决一个貌似解决不了的问题,这是Geek干的事情。花了很多精力,写了很多代码。到头来还是改变不了VB没落的事实。有的人利用这些时间成功迁移到主流的开发平台上来,有人继续挣扎,越挣扎,将来的迁移成本更高。
大家自己权衡。反正之前我也用了很多年VB,论对VB的感情和用VB的顺手程度,也一点不逊色大部分人。
------解决方案--------------------
能, 但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函数。
------解决方案--------------------
做一个函数,按参数构造出一个类对象实例并返回该对象即可
------解决方案--------------------
没有现成的方法,
楼上的兄弟们也出了不少点子,
总之就是绕着弯子模拟实现,数组,行集之类的都可以尝试看看
假设现在有一个学生对象的属性如下:
ID,Name,Sex,Age,Tel,Address
问:能否用运行时创建一个student对象,并让他有以上六个属性。
相当于做一个类工厂,根据条件生产出一个类来。
不是在工程里放一个student类,然后NEW一下。
不知道看贴的明白我的意思没?
------解决方案--------------------
Type
------解决方案--------------------
没听明白 为什么要创建一个student对象却不能有student类.
------解决方案--------------------
相当于运行时动态地创建一个类。
------解决方案--------------------
vb没有这个功能,你只能自己专门写代码来模拟。比如用recordset,等等。
------解决方案--------------------
如果你就要这个属性的话,type就可以完成阿。非要个类,还不时提前创建,何必跟自己过不去呢
------解决方案--------------------
++
------解决方案--------------------
帮你想2个办法:
第一个办法:做一个表格式的文本框控件OCX,这个文本框有6个值,分别是学生的ID,Name,Sex,Age,Tel,Address。
第二个办法:定义1个基础数组ID,Name,Sex,Age,Tel,Address,数组也是可继承的。需要时取得数组首地址即可。以上只是想法,能否实现,靠自己了!
------解决方案--------------------
应该不好实现,要么事先用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类不就行了吗~
------解决方案--------------------
我的意思是VB不但是一种过于简单的编程语言,而且已经相当过时了。这就是说,让VB实现复杂的特性,让VB不堪重负,讨论各种超出VB设计之初期望目标之外的小技巧有没有意义。
今天花了很多时间学习、研究出一个VB本身不支持的特性,明天解决一个貌似解决不了的问题,这是Geek干的事情。花了很多精力,写了很多代码。到头来还是改变不了VB没落的事实。有的人利用这些时间成功迁移到主流的开发平台上来,有人继续挣扎,越挣扎,将来的迁移成本更高。
大家自己权衡。反正之前我也用了很多年VB,论对VB的感情和用VB的顺手程度,也一点不逊色大部分人。
------解决方案--------------------
能, 但vb实现和使用太麻烦, 就是一个call 地址的问题,vb不方便做
类包装的对象其实也就是c++指针概念发挥到了一个新的层次的产物
最直观的看待就是一个结构,type,加上些特别的预定义的内容,使他按照特定规则进行着貌似无限的扩展应用
实现起来就是:
1 申请一块内存
2 构造几个属性函数,要在模块里面写,或者直接用全局变量代替
3 对该对象的调用,以申请的内存地址为类似句柄一样的东西,实际就是this(me)指针
4 将所有该类函数,属性,等方法的函数地址和变量索引复制到 this+0,4,8,12。。 4整数倍位置
5 。。。 调用 调用函数A,可能的方法就是 call (This+4)
------解决方案--------------------
可以,使用CreateDispTypeInfo和CreateStdDispatch函数。
------解决方案--------------------
做一个函数,按参数构造出一个类对象实例并返回该对象即可
------解决方案--------------------
没有现成的方法,
楼上的兄弟们也出了不少点子,
总之就是绕着弯子模拟实现,数组,行集之类的都可以尝试看看