Vb.net 在处理接口时,如何处理共享成员?
所以我做了大量的工作,试图为一组常见的类创建一个接口。其想法是制作一个接口,每个类都可以在集合中使用,但最终每个类都是不同的。结果表明,接口不喜欢共享成员。我尝试的是:Vb.net 在处理接口时,如何处理共享成员?,vb.net,interface,static,properties,decoupling,Vb.net,Interface,Static,Properties,Decoupling,所以我做了大量的工作,试图为一组常见的类创建一个接口。其想法是制作一个接口,每个类都可以在集合中使用,但最终每个类都是不同的。结果表明,接口不喜欢共享成员。我尝试的是: Public Interface ISomeInterface Shared Property Meta() as Object End Interface Public Class A Implements ISomeInterface Shared Public Property Meta() as Object Im
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个左右的类将实现一个接口。提前感谢。解决这一问题的最简单方法是使用
专用的接口实现,该接口只需转发给共享的成员
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,并且仍然实现该接口 如果接口的每个实现都应该使用自己的共享变量,那么JaredPar的方法就是正确的。如果想法是接口的所有用户都应该看到相同的共享变量,不管他们有什么实例(如果有的话),正确的方法是创建一个名称类似于接口的类,并使用该类的共享成员。这就是Enumerable.Empty或Comparer.Default等所使用的方法。该接口是什么样子的?公共接口ISomeInterface私有属性MetaImpl()作为对象结束Interface@hydroparadise对于这个模式,接口根本不需要更改。问题是,您需要实例化派生类来访问共享成员。