2014-08-29 137 views
0

我有一個列表的訪問共享的屬性...泛型列表

Public Class DatabaseCollection(Of T) 
    Inherits List(Of T) 

    Private Shared _LookupTables As Dictionary(Of String, IEnumerable) 
    Public Shared ReadOnly Property LookupTables As Dictionary(Of String, IEnumerable) 
    Get 
     If _LookupTables Is Nothing Then 
     _LookupTables = New Dictionary(Of String, IEnumerable) 
     End If 
     Return _LookupTables 
    End Get 
    End Property 
End Class 

,我想從其他地方訪問這個屬性。

我該怎麼做?

+0

請注意'Dictionary'不是線程安全的。如果屬性被多個線程訪問,則可能需要使用'ConcurrentDictionary'。 – Magnus 2014-08-29 21:18:54

+0

我不確定你在做什麼或者你在問什麼。你似乎在擴大通用列表的屬性,似乎獨立於列表,這讓我覺得有點不合適。你能澄清這個代碼的意圖究竟是什麼?另外我很困惑,「我想從其他地方訪問這個屬性,我該怎麼做?」。你的物體對我來說有點時髦,但它是一個像其他任何物體一樣的物體,你可以像其他任何物體一樣訪問它的屬性。 – Chris 2014-09-02 12:56:55

+0

@Chris,你說「你可以像其他人一樣訪問它的屬性」。你能發表一個答案,並告訴我一些代碼嗎? 'DatabaseCollection.LookupTables'不能編譯。 'DatabaseCollection(Of).LookupTables'也不能編譯。 – toddmo 2014-09-02 20:11:11

回答

0

我創建了一個新類Schema,它有一個共享屬性,包含每種類型的元信息詞典,包括LookupTable。 Schema構造函數採用有問題的類型,因此不存在歧義。

-1

編輯:

我能想到的來處理,這將是一個包含您的DatabaseCollection類另一個對象的最佳方式。所以你的DatabaseCollection對象將是你的'容器'對象的公共屬性。然後你可以在'Container'對象中有你的LookupTables,並且它將爲每個DatabaseCollection指定1-1。

除了你DatabaseCollection類(如果你有其他的屬性/方法如果你不那麼它可能只是一個通用的列表。),還包括以下內容:

Public Class ContainerForDatabaseCollection 
    Private Property _DbCollection as new DatabaseCollection 
    Public Readonly Property DbCollection as DatabaseCollection(of String) 
     Get 
      return _DbCollection 
     End Get 
    End Property 

    Private Shared Property _LookupTables As Dictionary(Of String, IEnumerable) 
    Public Shared ReadOnly Property LookupTables As Dictionary(Of String, IEnumerable) 
     Get 
      If _LookupTables Is Nothing Then 
       _LookupTables = New Dictionary(Of String, IEnumerable) 
      End If 

      Return _LookupTables 
     End Get 
    End Property 

public Sub New() 'Possibly include parameters for private properties... 
    'Initialize Private properties 
End Sub 

End Class 
+0

你可以做DatabaseCollection(Of String).LookupTables。但是,對於不同類型的T,我可以擁有的每種類型的集合都有獨立的集合。也許沒有辦法爲所有的T.(我不是一個誰downvoted) – toddmo 2014-08-29 21:48:31

+0

看到我編輯的答覆。 – 2014-09-02 12:53:10

+0

請添加一個代碼示例,使其更加清晰。謝謝。 – toddmo 2014-09-02 20:12:56