Enum変数の選択リストを出すには

解決


くまきち  2009-10-21 11:19:51  No: 146400  IP: 192.*.*.*

Enumの選択リストが出なくて困っています。

OracleADOクラス内で、System.Data.OracleClientに
Enum定義されているOracleTypeを使用した構造体を
定義しています。しかし、このままではOracleADO.dllを
参照しても、OracleTypeの参照リストが表示されません。

OracleADO内で再定義すれば表示されると思いますが、
再定義はしたくない。


【OracleADO.dllイメージ】
Imports System.Data.OracleClient

Public Class OracleADO

    Public Structure Param
        Dim s_Param As String     'パラメータ変数
        Dim s_Otype As OracleType 'Oracleデータ型
        Dim o_Value As Object     '設定値
    End Structure

    Public Function Adapter(ByVal SqlCmd As String, Optional ByVal SqlParam() As Param = Nothing) As System.Data.DataTable

      〜 (省略) 〜 

    end Function

end Class

【OracleADO.dll使用側イメージ】
Public Class OracleAccsess

    Public WithEvents xDB As New DBclass.OracleADO

    Sub adpter_Bind()

        Dim sSql As String
        Dim Param() As Spk.DB.ADO.Oracle.Param

        sSql = ""
        sSql &= "select * from TEST_dd "
        sSql &= "where DATA2 = @B_DATA2"

        ReDim Param(0)
        Param(0).s_Param = "B_DATA2"
        para(0).s_Otype = ( ここで選択リストが表示されない )
        Param(0).o_Value = 211
        xDB.Adapter(sSql, Param)
    End Sub

End Class

使用する側でも、System.Data.OracleClientを参照すれば、
解消するのでしょうが、それもしたくありません。


ほぼ同等の内容が下記にあるのですが、私には意味が分かりません。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=46185&forum=7&0

以上、宜しくお願いします。

編集 削除
くまきち  2009-10-21 12:49:10  No: 146401  IP: 192.*.*.*

(補足情報)
VB.NET2005環境にて開発しています。

編集 削除
魔界の仮面弁士  2009-10-21 13:30:15  No: 146402  IP: 192.*.*.*

利用側としては、
> para(0).s_Otype = 0
などと記述すると、s_Otype に対するエラー修正案が出ますので、
[Shift]+[Alt]+[F10]もしくは、そこに表示される『!』アイコンを
クリックする事で、自動的に System.Data.OracleClient.DLL が
参照設定に追加されるようになっています。それで運用回避できないでしょうか。


> OracleADO内で再定義すれば表示されると思いますが、
> 再定義はしたくない。
> 使用する側でも、System.Data.OracleClientを参照すれば、
> 解消するのでしょうが、それもしたくありません。
恐らく、それらいずれかの作業が必要になると思いますよ。
自作DLLだけでなく、標準のライブラリでさえ同じ状況になっているわけですし。

--------------------
たとえば、System.Windows.Forms.Form クラスには、
AccessibilityObject プロパティがありますよね。

このプロパティは、AccessibleObject クラスを返すものなのですが、
AccessibleObject は、Accessibility.DLL で定義されており、かつ、
初期状態では Accessibility.DLL が参照設定に含れていません。
(ちなみに Form クラスは System.Windows.Forms.DLL で定義されている)

そのため、Accessibility.DLL を参照設定に加えない場合には、
  Me.AccessibilityObject.
まで打っても、AccessibleObject のメンバ一覧は表示されませんし、
  Dim obj As AccessibleObject = Me.AccessibilityObject
と記述することもできません。残念ながらそういう仕様になっています。

編集 削除
くまきち  2009-10-21 13:50:04  No: 146403  IP: 192.*.*.*

> s_Otype に対するエラー修正案が出ますので、
> そこに表示される『!』アイコンをクリックする事で、
> 自動的にSystem.Data.OracleClient.DLL が
> 参照設定に追加されるようになっています。

これで運用回避する事にします。
ありがとうございました。

編集 削除