2012-09-21 75 views
2

我正在開發一個應用程序,用於將用戶添加到Active Directory中的組中,並使用兩個類:ADUser和Student,它們繼承自ADUser。NullReferenceException添加到父類中的列表

public class ADUser 
    property UserID as string 
    property MemberOf as new List(Of String) 
    (etc) 
end class 

public class Student inherits ADUser 
    property subjects as new list(Of Subject) 'Subject is a class of multiple strings 
end class 

我試圖主題名稱從列表對象複製到的memberOf名單,這將導致一個NullReferenceException(不設置到對象的實例對象引用)。下面的代碼在me.MemberOf.Add線產生一個錯誤:

 Function ConvertSubjectsToGroupMembership() As Boolean 
     Try 
      For Each s As Subject In Subjects 
       Me.MemberOf.Add(String.Format("t.{0}", s.ShortName).ToString) 
      Next 
      Return True 

     Catch ex As Exception 
      Return False 
     End Try 
    End Function 

我的產業的理解是,應創建的memberOf列表中創建Student對象的時候,但是這似乎並沒有這樣的情況。

任何幫助表示讚賞。

編輯: 我設法通過修改函數來創建一個列表(字符串),然後將其複製到的memberOf屬性來解決此問題:

Function ConvertSubjectsToGroupMembership() As Boolean 
    Dim SubjectShortNameList As New List(Of String) 

    For Each s As Subject In Subjects 
     SubjectShortNameList.Add(String.Format("t.{0}", s.ShortName).ToString) 
    Next 

    Try 
     MemberOf = SubjectShortNameList 
     Return True 

    Catch ex As Exception 
     Return False 
    End Try 
End Function 

它的工作原理,但我當然有更好的方法來做到這一點。我期待閱讀別人的答案/意見!

回答

0

看起來你已經將MemberOf代碼中的其他地方清空了。假設ConvertSubjectsToGroupMembership是Student的一個函數我運行了代碼,它工作正常。您可以嘗試擴展屬性,以便設置斷點。這將允許您找出Null引入的位置。

Public Class ADUser 
    Property UserID As String 
    Private _MemberOf As New List(Of String) 
    Public Property MemberOF As List(Of String) 
     Get 
      Return _MemberOf 
     End Get 
     Set(ByVal value As List(Of String)) 
      _MemberOf = value ***'breakpoint here*** 
     End Set 
    End Property 
End Class 
+0

這就是發生了什麼事。當我瀏覽代碼時,我想起已經建立了一個構造函數,它將'MemberOf'屬性設置爲空,導致列表被清空。感謝您指點我正確的方向。 –

相關問題