C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: VB製DLLの構造体をC#で使用したい


(過去ログ 43 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■23176 / inTopicNo.1)  VB製DLLの構造体をC#で使用したい
  
□投稿者/ 鶏唐揚 (273回)-(2008/08/10(Sun) 17:36:14)

分類:[C#] 

[VB]2008
[C#]2008
[OS]Vista

お世話になっております。
今回、VBでDLL作ってC#で使おうとしました。

VB側(名前空間はTestVB_PJ)

Public Class TestVB
    Public Structure TEST
        Private _Comment As String
        Private _Index As Integer
        
        Public Property Comment() As String
            Get
                Return _Comment
            End Get
            Set(ByVal value As String)
                _Comment = value
            End Set
        End Property

        Public Property Index() As Integer
            Get
                Return _Index
            End Get
            Set(ByVal value As Integer)
                _Index = value
            End Set
        End Property
    End Structure
End Class


C#側もクラスライブラリ。でVB製DLLを参照追加

using TestVB_PJ;

namespace TestCS_PJ
{
    public class TestCS
    {
        TestVB.TEST test;
        
        public void TestCS{
            test.Comment = "テスト";
            test.Index = 0;
        }
    }
}


上記コードでC#側の「test.Comment = "テスト";」の行で
「get または set アクセサが必要です」エラーとなります。
調べてもC#単体での説明ばかりで、今回のケース事例が出てきませんでした。

何が足りないのか検討つきません…
ご教示いただければと思います

よろしくお願いします

引用返信 編集キー/
■23177 / inTopicNo.2)  Re[1]: VB製DLLの構造体をC#で使用したい
□投稿者/ Azulean (178回)-(2008/08/10(Sun) 17:43:14)
2008/08/10(Sun) 17:44:57 編集(投稿者)
>         public void TestCS{
>             test.Comment = "テスト";
>             test.Index = 0;
>         }
TestCSがプロパティと認識されているのが問題では?
関数として書きたいなら、public void TestCS() { }というように()までちゃんと書かないとね。

あとは参照設定がちゃんとできてればコンパイルは通るはずです。
(インスタンスを作成するとかはまた別問題ということで)


よーするに:
public void TestCS()
{
    test.Comment = "テスト";
    test.Index = 0;
}

引用返信 編集キー/
■23178 / inTopicNo.3)  Re[2]: VB製DLLの構造体をC#で使用したい
□投稿者/ 鶏唐揚 (274回)-(2008/08/10(Sun) 17:56:56)
No23177 (Azulean さん) に返信
> TestCSがプロパティと認識されているのが問題では?
> 関数として書きたいなら、public void TestCS() { }というように()までちゃんと書かないとね。
ピンポイントな指摘ありがとうございます…orz

VBに慣れきっていたためこのあたりの認識がかなり薄くなってました
もう少しC#の書き方の癖が付くよう出直してきます o... rz
解決済み
引用返信 編集キー/
■23191 / inTopicNo.4)  Re[2]: VB製DLLの構造体をC#で使用したい
□投稿者/ よねKEN (172回)-(2008/08/11(Mon) 09:12:42)
> よーするに:
> public void TestCS()
> {
> test.Comment = "テスト";
> test.Index = 0;
> }

クラス名と同名なので、この修正ではまだビルドエラーですね。
コンストラクタですからここのvoidも削除します。

> ピンポイントな指摘ありがとうございます…orz

試されているでしょうから、void不要にはすでに気づかれているのかもしれませんね。
#その場合は単なる蛇足ということで

解決済み
引用返信 編集キー/
■23196 / inTopicNo.5)  Re[3]: VB製DLLの構造体をC#で使用したい
□投稿者/ Azulean (180回)-(2008/08/11(Mon) 10:13:33)
> クラス名と同名なので、この修正ではまだビルドエラーですね。
> コンストラクタですからここのvoidも削除します。

手元での再現では、Programクラスに書いてたから見落としてました。
フォローありがとうございます。
解決済み
引用返信 編集キー/
■23197 / inTopicNo.6)  Re[4]: VB製DLLの構造体をC#で使用したい
□投稿者/ 鶏唐揚 (275回)-(2008/08/11(Mon) 10:24:54)
No23196 (Azulean さん) に返信
>>クラス名と同名なので、この修正ではまだビルドエラーですね。
>>コンストラクタですからここのvoidも削除します。
はい、void不要には修正後気づきました。
ありがとうございます。

#これまたVBでコンストラクタはSub Newだったもんですから
 voidだろ!と勝手にw
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -