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

クラスライブラリについて

環境/言語:[Win 2000 Pro]
分類:[.NET]

こんにちはいつもお世話になります こうというものです。

今クラスライブラリの方を作成しているのですが、
構成としてフォームが一つ、標準モジュールが
2つの構成となっています(AssemblyInfo.vb除く)
この状況で出力の種類をクラスライブラリにして
ビルドを行い.dllファイルを作成し、使用してみた
のですがなぜかFormと一つのモジュールしか認識
していないみたいでもうひとつのモジュールの関数
などが使用できません。 何が原因か今ひとつわか
りません。 わかるところがあればお教え下さい。

何卒よろしくお願いします。
こんにちは、じゃんぬねっと です。

■No9650に返信(こうさんの記事)
> もうひとつのモジュールの関数などが使用できません。

その「もうひとつのモジュール」のアクセス修飾子が Public になっていないのではないでしょうか?
じゃんぬねっとさんありがとうございます

> その「もうひとつのモジュール」のアクセス修飾子が Public になっていないのではないでしょうか?

両モジュールをみたところ
Module Access
   〜
End Module

Module Tantou
   〜
End Module

アクセス修飾子とはフォームの方にコーディングされている
のでしょうか?

すいませんがよろしくお願いします。
こんにちは、じゃんぬねっと です。

■No9653に返信(こうさんの記事)
> 両モジュールをみたところ
> Module Access
>    〜
> End Module
>
> Module Tantou
>    〜
> End Module

おお、やはり。( ̄ー ̄)

以前にも書かせて頂いたかもしれませんが、アクセス修飾子は明示的につけましょう。
なぜならば、意図してそのアクセス修飾子にしているかわからないからです。

今回のように省略すると「Friend」になり、プロジェクト外からアクセスできません。
Public としてください。

  Public Module Access
    '/ 省略
  End Module

  Public Module Tantou
    '/ 省略
  End Module

> アクセス修飾子とはフォームの方にコーディングされているのでしょうか?

ちょっとその当たりを、Web でも紙の上でも良いのでお勉強しませんか?
なぜならば、今後、他のオブジェクト指向言語でも大いに役に立つからです。
じゃんぬねっとさんお返事ありがとうございます。

>   Public Module Access
>     '/ 省略
>   End Module
>
>   Public Module Tantou
>     '/ 省略
>   End Module
>

上記のように変更したのですが、なぜか状況がかわりません。
他に何か要因があるのでしょうか??

> ちょっとその当たりを、Web でも紙の上でも良いのでお勉強しませんか?
> なぜならば、今後、他のオブジェクト指向言語でも大いに役に立つからです。

ありがとうございます。 自分もオブジェクト指向を勉強したいと思っています。
できればお勧めの書籍やサイトとかあったら紹介してほしいのですが。

何卒よろしくお願いします。
こんにちは、じゃんぬねっと です。

■No9655に返信(こうさんの記事)
> 上記のように変更したのですが、なぜか状況がかわりません。
> 他に何か要因があるのでしょうか??

モジュール内の "公開したい" メンバ (メソッド・プロパティ) も Public になっておりますか?

> 一つのモジュールしか認識していない

というのが、謎ですが...
オブジェクト ブラウザで確認してみてください。

> 自分もオブジェクト指向を勉強したいと思っています。
> できればお勧めの書籍やサイトとかあったら紹介してほしいのですが。

うーん、好みによるのではないでしょうか?
http://www.google.co.jp/search?hl=ja&q=%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%8C%87%E5%90%91+%E3%81%A8%E3%81%AF&lr=
じゃんぬねっとさんいつもお返事本当にありがとうございます。

調べた結果なんとか原因がわかりました。
それは以下のようになっていたせいです。

いつも自分はFormを扱う際

Public Module Tantou
public SubForm as SerchForm

End Module
として、そのSearchFormというフォームには
Private Sub 顧客採寸_Load(///////)
  subForm = SearchForm.DefInstance

end sub

としていたのですが、その部分を

Private Sub 顧客採寸_Load(///////)
  subForm = Me 

end sub
にしたところフォームから2つのモジュールの
関数などを参照できました。
でもなぜ.dllファイルにした時にだけ駄目なの
かはよくわかりませんでした。
何かお気づきの点があれば教えて下さい。

何卒よろしくお願いします。
こんにちは、じゃんぬねっと です。

■No9664に返信(こうさんの記事)
> そのSearchFormというフォームには
> Private Sub 顧客採寸_Load(///////)
>   subForm = SearchForm.DefInstance
> 〜
> end sub
>
> としていたのですが、その部分を

これだけでは、このスレッドを単に見ている方へは、伝わりませんよ (^^)

おそらく DefInstance は、明示的にインスタンス化を実装したプロパティだと思いますが。
http://www.microsoft.com/japan/msdn/vbasic/migration/tips/instance.aspx
じゃんぬねっとさんありがとうございます。
ネットでオブジェクト指向関連いろいろみてるん
ですが、なかなかむずかしいですね。
でもがんばってみます。

ではでは
解決済み!

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