none
Public Class中既Public Class不能存取??? RRS feed

  • 問題

  • Common.vb 的Code 如下

    Public Class clsCommon

        Public Class LetterTemplate
            Private _Day30File As String

            Public Property Day30File() As String
                Get
                    Return _Day30File
                End Get
                Set(ByVal value As String)
                    _Day30File = "Day30.htm" 'value
                End Set
            End Property
        End Class

    End Class

    在外部的Form,
    dim c as
    clsCommon = new clsCommon
    c.
    LetterTemplate 後,不會出現Property Day30File

    但如果去掉
    Public Class LetterTemplate

    就可以存取c.
    Day30File

    請問如何構多層類別??
    2008年11月20日 上午 05:56

解答

  •  

    如上面兩位所說,程式碼是一個巢狀類別
    樓主的需求是可以使用
    c.LetterTemplate.Day30File

     

    雖然程式碼宣告為巢狀類別
    但是在建立clsCommon物件時
    實際上並不會
    在clsCommon物件內建立 clsCommon.LetterTemplate物件

     

    將程式碼改為下列
    我們以程式碼宣告
    在clsCommon物件內建立 clsCommon.LetterTemplate物件

     

    這樣就可以達成使用c.LetterTemplate.Day30File


    Code Snippet

    Public Class clsCommon

        Public Class LetterTemplate
            Private _Day30File As String

            Public Property Day30File() As String
                Get
                    Return _Day30File
                End Get
                Set(ByVal value As String)
                    _Day30File = "Day30.htm" 'value
                End Set
            End Property
        End Class


        Private _letterTemplate As LetterTemplate
     
        Public Property LetterTemplate() As String
            Get
                Return _letterTemplate
            End Get
        End Property

    End Class

     

     

     

    2008年11月21日 上午 02:02

所有回覆

  • 你的結構大有問題
    依照你的需求應該改寫成
     
    Code Snippet
    Public Class clsCommon
        Public letterTemplate As New LetterTemplate
    End Class
     
    Public Class LetterTemplate
        Private _Day30File As String
     
        Public Property Day30File() As String
            Get
                Return _Day30File
            End Get
            Set(ByVal value As String)
                _Day30File = "Day30.htm" 'value
            End Set
        End Property
    End Class

     

     

    2008年11月20日 上午 08:06
  • HI,

     

    您寫的是巢狀類別的語法, 所以可以這樣用clsCommon類別:

           

    Dim obj As New clsCommon.LetterTemplate
    obj.Day30File = "Test"

    tihs

    2008年11月20日 下午 02:31
  •  

    如上面兩位所說,程式碼是一個巢狀類別
    樓主的需求是可以使用
    c.LetterTemplate.Day30File

     

    雖然程式碼宣告為巢狀類別
    但是在建立clsCommon物件時
    實際上並不會
    在clsCommon物件內建立 clsCommon.LetterTemplate物件

     

    將程式碼改為下列
    我們以程式碼宣告
    在clsCommon物件內建立 clsCommon.LetterTemplate物件

     

    這樣就可以達成使用c.LetterTemplate.Day30File


    Code Snippet

    Public Class clsCommon

        Public Class LetterTemplate
            Private _Day30File As String

            Public Property Day30File() As String
                Get
                    Return _Day30File
                End Get
                Set(ByVal value As String)
                    _Day30File = "Day30.htm" 'value
                End Set
            End Property
        End Class


        Private _letterTemplate As LetterTemplate
     
        Public Property LetterTemplate() As String
            Get
                Return _letterTemplate
            End Get
        End Property

    End Class

     

     

     

    2008年11月21日 上午 02:02