DOBON.NET DOBON.NETプログラミング掲示板過去ログ

定数を含むインターフェイスをVB.NETで実装する方法

環境/言語:[言語 : Visual Basic .NET / .NET Framework : 1.1]
分類:[.NET]

定数を含むインターフェイスをVB.NETで実装する方法を教えて下さい。

J#で書かれたDLLを使う、VBアプリを作っています。J#ではインターフェイスに定数を含むことが出来るようですが、そのインターフェイスを持つDLLをVBで実装しようとすると、うまくコンパイル出来ません。定数を実装しろとのエラーメッセージ(must implement xxx for interface)が出るのですが、その実装方法が分かりません。
VBではインターフェイスに定数を含むことが出来ないので、このようなDLLを使うことは無理なのでしょうか?
「定数式が必要です。」というエラーですか?
たとえば、String.Emptyは定数ではないので、""にする必要があります。

Sub Hoge(Optional Byval p1 As String = "")

※定数ってこのくらいしか思い浮かばないなぁ。

実際VBではどんな定義をしていますか?
■No20753に返信(まどかさんの記事)
> Sub Hoge(Optional Byval p1 As String = "")
> ※定数ってこのくらいしか思い浮かばないなぁ。

ヒント: インターフェイス上の定数フィールドメンバの話だと思いますよ。
> ヒント: インターフェイス上の定数フィールドメンバの話だと思いますよ。

フィールドをいきなりは書けませんでしたが
構造体の内側に書けますね。
ご回答ありがとうございます。

問題は、じゃんぬねっとさんのご指摘どおり、インターフェイス上の定数フィールドメンバがVBで実装出来ないことです。
説明不足でした、申し訳ございません。

エラーメッセージは、
'VBApp.Class1' must implement 'Public Const x As Integer = 0' for interface 'J#DLL.interface'.
というものです。

ここで、VBApp.Class1は、DLLの機能を実装するために作成したVBのクラス、J#DLL.interfaceはそのDLLのインターフェイスです。
Implements J#DLL.interfaceとクラス宣言のところに書いて、このDLLが提供するコールバック関数を利用したいのですが、参照するインターフェイスのすべてのメンバを実装しなければならないようで、定数メンバの実装方法が分からず悩んでいます。

DOBON.NET | プログラミング道 | プログラミング掲示板