2009-02-13 20 views
0

我有一個有子對象(Action)的對象(事件)。事件可能有零個或一個Action對象。我試圖測試事件對象是否具有子Action對象用下面的代碼:阻擋子對象實例化

If Not MyIncident.Action Is Nothing

理論上這應該工作,但由於某種原因,孩子Action對象是神祕intantiated(無值) 。這似乎實例上的if else語句,我檢查事件對象的ID屬性來制定出它是否已被保存到數據庫或沒有的兒排隊的情況發生:

If MyIncident.ID = 0 Then 

    Me.cmdAddNote.Visible = False 
    Me.dgvNotes.Visible = False 
    Me.DefaultHitsAndMisses() 

Else 
    Me.cmdAddNote.Visible = True 

    If Not MyIncident.Action Is Nothing Then 
    Me.cboCorrectiveActionStatus.SelectedValue = Me.MyIncident.Action.Status.ID 
    End If 
End If 

MyIncident.Action爲Nothing在If語句的第一行,但似乎在這個和Else行之間被實例化(在這個例子中只有else的情況會被執行)。

如果事件對象被填充時,Action對象被另外實例化,如果事件對象沒有關聯的Action,則Action對象顯式地保持不被實例化。

我希望基於一些關於Action對象是否爲無的邏輯,但它似乎不是一個可靠的檢查。

任何人都可以對此有所瞭解嗎?

注意:道歉,但代碼示例似乎不想正確標記!

+0

你能給我們提供事件類定義嗎? – cjk 2009-02-13 12:37:21

回答

1

你的動作是一個結構還是一個類?結構不能爲空。

1

它是用As New定義的嗎?或者也許是一個結構?

0

哈!我試圖變得聰明,實際上是愚蠢的,我的Action屬性每次調用時都會構造對象的一個​​新實例,並檢查數據庫中相應的數據。如果數據無法加載,我無法將Action成員變量設置爲無效。如果發生這種情況,我已經修改了該屬性以不返回任何內容,現在一切正常。我試圖通過'延遲加載'Action對象來變得聰明。這將學習我。

感謝所有提供幫助的人。