これが私の現在の設定です:
Public Interface IDatabase
Function CreateParameter(name as String, dbType as <dbTypeEnumeration>)
End Interface
Public Class OracleDatabaseRepository
Implements IDatabase
Public Function CreateParameter(ByVal name As String, ByVal dbtype As <dbTypeEnumeration>) As Object
End Function
End Class
Public Class SQLServerRepository
Implements IDatabase
Public Function CreateParameter(ByVal name As String, ByVal dbtype As <dbTypeEnumeration>) As Object
End Function
End Class
Public Class DatabaseService
Private _rep As IDatabase
Sub New(ByRef rep As IDatabase)
_rep = rep
End Sub
Public Function CreateParameter(ByVal name As String, ByRef dbtype As <dbTypeEnumeration>) As Object
_rep.CreateParameter(name, dbtype)
End Function
End Class
ここでの問題は、dbTypeEnumerationとは正確に何であるかです。上記の例では、それは私の問題が何であるかに対する単なるプレースホルダーです。OracleデータベースとSQLServerデータベースの両方を使用するため、DbTypeは使用するデータベースによって異なります。Oracleの場合、OracleClientオブジェクトには、タイプを含む独自のOracleDbType列挙があります。SQLServerにも独自の列挙型があります。
私の質問は、DatabaseServiceコンストラクターに注入されたリポジトリーに応じて、これらのデータベース固有の列挙を表示することは可能ですか?そうでない場合、これを行うための最良の方法は何ですか?2つのデータベースを分離し、ロジックを共有し、将来の開発を可能にしたいのですが、その開発のコードコントラクトとしてのインターフェイスです。