Классическое свойство класса ASP с наследованием - PullRequest
2 голосов
/ 30 декабря 2010

У меня серьезный пердеж мозга, почему это не работает для меня.У меня есть два класса

class Order

    private Test_1
    private oCustomer

    public property get Test() Test= Test_1 end property
    public property let Test( value ) Test_1 = value end property


  public property get Customer()

    if ( NOT isObject( oCustomer ) ) then

        set oCustomer = new OrderCustomer

    end if

    set Customer = oCustomer

  end property

end class


class OrderCustomer

    private FirstName_1

    public property get FirstName() FirstName = FirstName_1 end property
    public property let FirstName( value ) FirstName_1 = value end property

end class

Когда я вызываю следующий код, я получаю результат в комментариях

set oOrder = new Order

    oOrder.Test = "Hi"
    response.write oOrder.Test()    'writes out "HI"

    oOrder.Customer.FirstName = "Fred"    'does actually set it to this value, I am able to response.write out FirstName_1 after it is set in let
    response.write oOrder.Customer.FirstName() 'writes out nothing

set oOrder = nothing

Что мне здесь не хватает?Я был почти уверен, что делал это на предыдущих проектах.

Ответы [ 2 ]

0 голосов
/ 30 декабря 2010

Свойство всегда возвращает нового клиента. Вы должны изменить порядок на что-то вроде

class Order

    private m_Customer

    private sub Class_Initialize()
        set m_Customer = new Customer
    end sub

    public property get Customer()

        set Customer = m_Customer

    end property

end class

Это создаст новый объект клиента при создании заказа.

Кроме того, то, что здесь происходит, на самом деле не наследование. Клиент - это собственность Заказа.

0 голосов
/ 30 декабря 2010

Проблема заключается в том, что каждый раз при доступе к свойству Customer создается новое

Предлагаемое решение (не проверено):

  private _Customer
  public property get Customer()
    if _Customer is nothing then
       set _Customer = new OrderCustomer
    end if
    set Customer = _Customer
  end property
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...