Class cacheable(Of T As haveTimeStampandMainStringKey)
Public ReadOnly Property Cache As T
Public ReadOnly Property timestamp As Date
Public Shared Function create(cache1 As T) As cacheable(Of T)
Dim a = New cacheable(Of T)
a._Cache = cache1
a._timestamp = Now
Dim key = T.mainkey 'this things fail to compile
Return a
End Function
End Class
Interface haveTimeStampandMainStringKey
ReadOnly Property TimeStamp As DateTime
ReadOnly Property mainKey As String
End Interface
基本上我希望可缓存的类仅与支持haveTimeStampandMainStringKey的类一起使用
还
Dim key = T.mainkey
产生错误
很明显T支持haveTimeStampandMainStringKey接口。因此,我应该可以访问T.mainkey。我不能为什么?代码有什么问题?
为什么?
答案 0 :(得分:1)
它不起作用,因为T
是一种类型,而不是实例。您需要有一个实例来引用mainKey
。您可能需要a.Cache.mainKey
或cache1.mainKey
。
(不幸的是,如果您确实想要Shared
而不是附加到实例的东西,则没有很好的方法,因为.NET不支持它,除非通过各种基于反射的方法,请参见这些年来,人们对缺少“静态接口”感到很遗憾。