设置
我们的大部分代码库都在 VB.NET 中。我正在用 C# 开发一个项目,该项目使用 VB.NET 代码中的大量程序集。
VB.NET 中有三个相关的类:
Public MustInherit Class mdTable
Public Sub New(ByVal sqlConnectionStr As String, Optional ByVal maxSecsToDisableConnection As Integer = 60)
ReDim pConnStr(0)
pConnStr(0) = sqlConnectionStr
pDBName = parseDBName(sqlConnectionStr)
m_colLastConnectStatus.disablePeriod = maxSecsToDisableConnection
End Sub
Public MustInherit Class xsTable //uses the constructor above since second parameter is optional
Inherits mdTable
Public Sub New(ByVal sqlConnectionString As String)
MyBase.New(sqlConnectionString)
End Sub
Public Class SharedCallsTable //the only constructor available in this class
Inherits xsTable
Public Sub New(Optional ByRef lErrStr As String = "", _
Optional ByVal checkTableExists As Boolean = False, _
Optional ByVal sqlServerIndex As Integer = -1)
MyBase.New(forceServerIndex:=sqlServerIndex)
defineTable(DBUser, checkTableExists)
lErrStr &= CStr(IIf(errStr <> "", vbCrLf & errStr, ""))
End Sub
显然,所有这些都在 Visual Basic 中。
有许多不同版本的 SharedCallsTable 可以处理我们 SQL 数据库中的其他表类型,SharedCallsTable 只是一个示例。
问题:
我无法通过使用将单个字符串作为构造函数的 xsTable 构造函数来创建 SharedCallsTable 的实例,因为它调用了具有可选参数 (maxSecsToDisableConnection) 的 mdTable 构造函数。C# 不支持可选参数。
所以当我这样做时:
SharedCallsTable myTable = new SharedCallsTable(connectionString);
我明白了
SharedCallsTable 不包含采用“1”参数的构造函数
迄今为止的进展
我在 C# 中创建了另一个类 xsToolboxTable,它继承了 xsTable,并像这样调用单个字符串构造函数:
class xsToolboxTable : xsTable
{
public xsToolboxTable(string connectionString) : base(connectionString)
{
}
}
但是,这意味着我只能实例化一个 xsTable,而不能实例化 SharedCallsTable,因为它们都继承自同一个类。
我也尝试过让我的扩展类继承自 SharedCallsTable,但它给了我同样的结果。
我明白了
SharedCallsTable 不包含采用“1”参数的构造函数
我真正需要做的是调用基类构造函数的基础,即xsTableExtension的基础是SharedCallsTable。SharedCallsTable 的基础是 xsTable,它具有我需要使用的单个字符串构造函数。
我知道这真的很复杂,可能有一个非常简单的解决方案,我只是完全错过了。
这有点复杂,所以请多多包涵。