tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re^4: DLL内の複数クラスで値を参照/格納する方法は?
投稿日: 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」に変更したら取得する事ができ
ました。
例外オブジェクトとは違うやり方なのでこれが正しいのかは、判断が
難しい所です。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。