gpt4 book ai didi

vbscript - 如何使用存储在应用程序中的类?

转载 作者:行者123 更新时间:2023-12-02 21:36:09 25 4
gpt4 key购买 nike

我定义了一个这样的类:

Class Foo
Public SomePublicProperty

Public Function init(p_somePublicProperty)
set init = Me

SomePublicProperty= p_somePublicProperty
End Function
End Class

然后在我的 global.asa Application_OnStart 中使用它,如下所示:

Dim fooInstance 

Set fooInstance = New Foo.init("Some data")

fooArray = Array(fooInstance)

Application("fooArray") = fooArray

这工作正常,但是当我从另一个页面上的应用程序商店取回值时,我无法访问该属性...

fooArray = Application("fooArray")

fooArray(0).SomePublicProperty 'This line returns an error - Object doesn't support this property or method

我尝试将类定义放入第二页,但没有帮助。

我错过了什么?

<小时/>

我刚刚找到this问题。我假设相同的规则重新序列化同样适用于应用程序对象是否正确?所以我不应该尝试这样做?

最佳答案

不幸的是你不能这样做,这是我能找到的最好的解释;

From Can I store VBScript class objects in a Session variable?
This is because VBS classes are NOT true classes. They are really just in-memory collections of info, and there is no way to guarantee (for example) that an instance that is stored in one page will even come close to matching the class definition in another page.

这与使用 Server.CreateObject() COM 对象不同,COM 对象可以从 ApplicationSession 存储和检索对象。

您有几个选择;

  • 自己在结构化字符串中序列化对象,然后在需要时使用它来反序列化对象。

  • 为 VBScript 类创建 COM 包装器并完全停止使用 Class 语句。由于 COM 对象可以存储在 ApplicationSession 对象中,只要 COM 类是单线程的,这就应该可以工作。

  • 将您的类转换为 Array 并使用它。

<小时/>

有用的链接

关于vbscript - 如何使用存储在应用程序中的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38209059/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com