タイトル | : Re^4: DLL内の複数クラスで値を参照/格納する方法は? |
記事No | : 2049 |
投稿日 | : 2005/08/30(Tue) 17:58 |
投稿者 | : TCZ |
お世話になります。
> ・classは静的クラスではないですよね? DLLをインポートしてるわけではないので動的クラスだと思っています。 アプリケーションと同じ場所にDLLを配置しています。
> ・差し支えない程度で結構ですので,呼び出される側と呼び出し側のソースを見せていただけますか? 少しソースが長くなってしまいますが、いいでしょうか? (これでも短くした方なんですが・・・)
〜呼び出し元アプリ〜 Dim ObjFileMove As New ClsFileMove Dim ObjLog As New ClsOutLog Dim IntRtn As Integer IntRtn = ObjFileMove.FMove("移動前ファイル", "移動後ファイル") If IntRtn <> 0 Then ObjLog.WriteLog("ログファイル","メッセージファイル") Exit Sub End If
以下、同じDLL内にクラスA、Bを定義しています。 〜クラスA〜 'ファイル移動メソッド Public Function FMove(ByVal StrMoveBefore As String, _ ByVal StrMoveAfter As String) As Integer Try System.IO.File.Move(StrMoveBefore, StrMoveAfter) Return 0 Catch Ex As Exception Dim ObjLog As New ClsOutLog ObjLog.PropertyTest = Err.Number Return 1 End Try End Funticon
〜クラスB〜 Public PubIntErrNo As Integer
'Err.Number設定/取得用プロパティ Public Property PropertyTest() As Integer Get Return PubIntErrNo End Get Set(ByVal IntNumber As Integer) PubIntErrNo = IntNumber End Set End Property
'ログ出力メソッド Public Function WriteLogApp(ByVal strLogFile As String, _ ByVal strMsgFile As String) '様々な処理を行う 'クラスAでセットされた"Err.Number"を取得(したい) If PropertyTest <> 0 Then StrEC = "(Code=" & CStr(PubIntErrNo) & ")" Else StrEC = "" End If 'ログ出力実行 End Function
これが、質問した時のコードです。あれから色々試した所、クラスBの Public変数宣言を「Public Shared」に変更したら取得する事ができ ました。 例外オブジェクトとは違うやり方なのでこれが正しいのかは、判断が 難しい所です。
|