2014-08-29 100 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