目前我们正在使用对象和对象集合,如下所示:
Public Class childObj Inherits BaseObjClass Implements IInspRevChild
...
End Class
Public Class childObj_Collection Inhertis BaseObjCollClass(Of childObj)
...
End Class
Public Class parentObj Inherits BaseObjClass Implements IInspRev
...
Public Function GetChildren() AS childObj_Collection Implements IInspRev.GetChildrenCollection
...
End Function
End Class
我想定义一个带有GetChildren函数定义的接口。
我打算尝试这样的事情:
Public Interface IInspRev
Function GetChildrenCollection() As BaseObjCollClass(Of BaseObjClass )
End Interface
但是编译器并不喜欢这样。有人能让我直截了当吗?
答案 0 :(得分:1)
你有一个循环引用问题。 BaseObjClass
实施IInspRev
,而BaseObjClass
依赖于GetChildrenCollection
。编译器处于“鸡或蛋”状态,因此失败。
定义IInspRev
内Readonly Property Childrens() As ICollection(Of IInspRev)
方法的更好方法可能是:
Readonly Property Childrens As IEnumerable(Of IInspRev)
如果您不需要界面来添加,删除或替换子项,这将更好:
{{1}}
请注意,我将其设为readonly属性而不是方法。这种公开子对象集合的方式在.NET Universe中是首选。