2010-12-30 11 views
2

これはなぜ私にとってうまくいかないのか、深刻な脳のおならを持っています。私はここで何をしないのです二つのクラス継承を使用した従来のASPクラスプロパティ

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 

がありますか?私はこれまでのプロジェクトでこれをやったと確信していました。

答えて

0

問題は、すべての時間は、それが新しいもの

提案されたソリューションを作成し、お客様のプロパティにアクセスすることである(テストしていません):

private _Customer 
    public property get Customer() 
    if _Customer is nothing then 
     set _Customer = new OrderCustomer 
    end if 
    set Customer = _Customer 
    end property 
+0

私はコード内にこれを持っていますが、上記の私の例では入れていません。 if(not isObject(oCustomer))を設定し、oCustomer = new OrderCustomer endをCustomer = oCustomerに設定すると終了します。 – clownshoes

+1

私はoCustomer [o]がoCustomerではなくオブジェクトであるかどうかをチェックしていたことに気付き、コードを更新しました。 Le sigh ... – clownshoes

+0

Option Explicit –

0

プロパティは、常に新しい顧客を返しています。

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

私は、コード自体を再作成していないことを示すようにコードを更新しました。oCustomer [s]がoCustomerではなくオブジェクトであるかどうかを確認していました。 Le sigh ... – clownshoes

+0

心配はいりません。問題の形で問題を書き出す行為は、しばしば答えにつながる。 – jammus

関連する問題