在基类中使用mustinherit属性

时间:2015-07-18 09:58:59

标签: c# vb.net oop

我有一个基类表,其中包含我希望在所有派生类中拥有的默认mustoverride属性。

infix operator =? {
    associativity none
    precedence 130
}

func =? <T>(inout lhs: T?, rhs: Any?) {
    lhs = rhs as? T
}

var movie: Movie?
let item: Any? = Movie(name: "some movie")

movie =? item
movie?.name // "some movie"

使用了行基类

Public MustInherit Class TableBase
  Default Public MustOverride ReadOnly Property Rows(iID As Integer) As RowBase
End Class

从名为RowX

的rowbase派生的类
Public Class RowBase
End Class

从Table base派生的表类TableX。

Public Class RowX
    Inherits RowBase
    Public Property Name As String
End Class

使用以下方法的测试表:

Public Class TableX
    Inherits TableBase

    Default Public Overrides ReadOnly Property Rows(iID As Integer) As RowBase
        Get
        End Get
    End Property
End Class

构建这将给我一个消息,名称不是Rowbase的属性。 我不能将tableX中属性Rows的类型更改为RowX,因为它是mustinherit。

解决此问题的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

ValueError: total size of new array must be unchanged 应该是RowX的属性,因为表格“有一行”。

属性TableX不应该Name使其成为public,并且将getter和setter方法设为private,因为它违反了封装

现在可以使用public访问Name。 因此,您可以将代码修改为:

_tablex._rowx.Name

假设您要将传递的值设置为名称。

对于错误的语法(如果有的话,我是Java开发人员)

抱歉