因此,我尝试为一组通用的类创建一个接口。我们的想法是创建一个每个类可以在集合中使用的接口,但最终每个类都是不同的。原来接口不喜欢共享成员。我尝试了什么:
Public Interface ISomeInterface
Shared Property Meta() as Object
End Interface
Public Class A
Implements ISomeInterface
Shared Public Property Meta() as Object Implements ISomeInterFace.Meta
'Set/get methods
End Propery
Public Function Haduken() as Object
'perform Haduken
End Function
End Class
Public Class B
Implements ISomeInterface
Shared Public Property Meta() as Object Implements ISomeInterFace.Meta
'Set/get methods
End Propery
Public Function SonicBoom() as Object
'perform sonic boom
End Function
End Class
显然,如果我完成了这项工作,我就会知道共享成员不能在接口中使用。我应该让各个班级完全负责处理其共享成员吗?是否有另一种方法可以将共享成员的联系降至最低?大约有20个左右的类将实现单个接口。提前谢谢。
答案 0 :(得分:2)
解决此问题的最简单方法是使用Private
实现接口,只转发给Shared
成员
Public Shared Property Meta As Object
' Get / Set methods
End Property
Private Property MetaImpl() as Object Implements ISomeInterFace.Meta
Get
return Meta
End Get
Set
Meta = Value
End Set
End Propery
此模式允许您维护相同的面向公众的API并仍然实现该接口。
答案 1 :(得分:0)
如果想法是接口的每个实现都应该使用自己的共享变量,那么JaredPar的方法是正确的。如果想法是接口的所有用户都应该看到相同的共享变量,无论他们拥有什么实例(如果有的话),正确的方法是创建一个名称类似于接口的类,并使用共享成员那个班。这是例如使用的方法。可枚举< T> .Empty或Comparer< T> .Default。