Классические свойства класса ASP - PullRequest
1 голос
/ 10 ноября 2009

Можно ли установить объект словаря как свойство класса в classic ASP ? Я не могу понять синтаксис правильно. У меня есть функция, которую я хочу вернуть объект словаря, и назначить объект словаря, возвращаемый функцией, свойству класса, но я продолжаю получать ошибку несоответствия типов?

Если я не могу использовать объект словаря, могу ли я использовать массив?

Я новичок в классическом ASP, но хорошо знаю C # / .NET.

Ответы [ 2 ]

7 голосов
/ 10 ноября 2009

Вот простой пример

Class TestClass
    private testDictionary

    public property get TestDict
        Set TestDict = testDictionary
    end property
    public property let TestDict(byval value)
        Set testDictionary = value
    end property
    public property set TestDict(byval value)
        Set testDictionary = value
    end property
    public function getValue(index)
        getValue = testDictionary.Item(index)
    end function
end class

'Create a Dictionary and add an entry
Set newDict = CreateObject("Scripting.Dictionary")
newDict.Add 1, "This is a test"

'Assign the dictionary to the custom object
Set mynewClass = new TestClass
mynewClass.TestDict = newDict
Set newDict = Nothing

wscript.echo mynewClass.getValue(1)

Set mynewClass = Nothing

Просто не забудьте использовать Установить при работе с объектами.

0 голосов
/ 12 ноября 2009

Вы также должны использовать ключевое слово Set при назначении свойства в классе.

Class DictionaryClass
    Private m_Dictionary

    Public Sub Class_Initialize()
        Set m_Dictionary = Server.CreateObject("Scripting.Dictionary")
    End Sub

    Public Property Get Dictionary()
        Set Dictionary = m_Dictionary
    End Property

    Public Property Set Dictionary(value)
        Set m_Dictionary = value
    End Property
End Class

Function GetDictionary()
    Dim dictionary : Set dictionary = Server.CreateObject("Scripting.Dictionary")
    'some magic'
    Set GetDictionary = dictionary
End Function

Dim oDictionaryClass : Set oDictionaryClass = New DictionaryClass
Set oDictionaryClass.Dictionary = GetDictionary()
...