在VB.NET中使用单个属性实现多个接口

Kyl*_*Mit 5 .net vb.net interface implements

在启动时,我将所有app.config值加载到一个名为的类中ConfigValues.我的数据库只需要其中一些,所以我有一个IDatabaseConfig接口,只指定它需要的参数.这样,当我使用构造函数注入创建数据库连接类时,我可以要求它传递任何实现的东西IDatabaseConfig.

我想做的是在ConfigValues类上声明多个接口,并允许一些属性同时实现多个合同.

这是一个小代码示例:

Public Interface IAppConfig
    Property Server As String
    Property ErrorPath As String
End Interface

Public Interface IDatabaseConfig
    Property Server As String
End Interface

Public Class ConfigValues
    Implements IAppConfig
    Implements IDatabaseConfig

    Public Property ErrorPath As String Implements IAppConfig.ErrorPath

    'need different syntax - does not compile:
    Public Property Server As String Implements IAppConfig.Server, 
                                     Implements IDatabaseConfig.Server

End Class
Run Code Online (Sandbox Code Playgroud)

在VB.NET中,有没有办法指定单个属性满足多个接口的契约?

这与SO上的这两个问题完全相反,它们试图将相同的接口名称拆分为两个不同的属性.


作为一个笨重的解决方法,我可以让两个属性引用相同的支持属性,但我必须更改其中至少一个属性名称,这会更改API.

Private _server As String
Public Property ServerForApp As String Implements IAppConfig.Server
    Get
        Return _server
    End Get
    Set(value As String)
        _server = value
    End Set
End Property
Public Property ServerForDatabase As String Implements IDatabaseConfig.Server
    Get
        Return _server
    End Get
    Set(value As String)
        _server = value
    End Set
End Property
Run Code Online (Sandbox Code Playgroud)

SWe*_*eko 9

我认为你想要的是支持的,你只是语法错误:

Public Class ConfigValues
    Implements IAppConfig
    Implements IDatabaseConfig

    Public Property ErrorPath As String Implements IAppConfig.ErrorPath

    Public Property Server As String Implements IAppConfig.Server, 
                                                IDatabaseConfig.Server

End Class
Run Code Online (Sandbox Code Playgroud)