当前位置 : 主页 > 手机开发 > 其它 >

将继承转换为从C#到VB.NET的接口

来源:互联网 收集:自由互联 发布时间:2021-06-19
如何将以下代码转换为VB.NET? class A{ public int NumberA { get; set; }}class B : A, I{ public int NumberB { get; set; }}interface I{ int NumberA { get; set; } int NumberB { get; set; }} 在VB.NET中,属性声明后的Implements关键
如何将以下代码转换为VB.NET?

class A
{
    public int NumberA { get; set; }
}

class B : A, I
{
    public int NumberB { get; set; }
}

interface I
{
    int NumberA { get; set; }
    int NumberB { get; set; }
}

在VB.NET中,属性声明后的Implements关键字存在问题.所以我需要做这样的事情:

Class B
    Inherits A
    Implements IC

    Public Property NumberB() As Integer Implements IC.NumberB
    Get
        Return m_NumberB
    End Get
    Set(ByVal value As Integer)
        m_NumberB = value
    End Set
    End Property
    Private m_NumberB As Integer

    Public Property NumberA1() As Integer Implements IC.NumberA
    Get
        Return MyBase.NumberA
    End Get
    Set(ByVal value As Integer)
        MyBase.NumberA = value
    End Set
    End Property
End Class

但是存在重复的误导性财产NumberA1.有什么方法可以更聪明地做到这一点?

是的,在vb.net中不受支持.与C#不同,编译器要求使用显式的Implements关键字实现接口.你最接近的是:

Interface ICA
    Property NumberA() As Integer
End Interface
Interface ICB
    Property NumberB() As Integer
End Interface

Class A
    Implements ICA
    Public Property NumberA() As Integer Implements ICA.NumberA
        '' etc
    End Property
End Class

Class B
    Inherits A
    Implements ICA, ICB

    Public Property NumberB() As Integer Implements ICB.NumberB
        '' etc...
    End Property
End Class

注意,B现在不再需要实现NumberA,即使它实现了ICA,也接受了A中的实现.但当然,这需要过多地修改原始定义.您使用的解决方法很好,并且在运行时没有任何不利影响.请注意,您可以将A1设为私有.

网友评论