• 締切済み

関数スコープの変更の仕方について

こんにちは。いつも勉強させていただいております。 VB2005始めて間もない初心者なので分かりにくい表現が多々あるかと思いますが よろしくお願いいたします。 現在2つのプロジェクトを作っていて、どちらもxxx.dllというファイルを参照しています。 やりたいことは、xxx.dll内でグローバル変数として宣言しているyyy変数の関数スコープを動的に変更したいと思っております。 プロジェクト1ではyyy変数の関数スコープをPrivate プロジェクト2ではyyy変数の関数スコープをPublic なお、このxxx.dllは他にも色々と使われており、基本はPrivateのままにしておきたいので、 最初からxxx.dllのグローバル変数のスコープをPublicにすれば良いということはできません。 特定のプロジェクトから呼び出されたときだけPublicにすることは可能でしょうか? どうぞよろしくお願いいたします。

みんなの回答

回答No.3

スコープが異なるということは本来は使われる目的が異なるものと考えられます。 プライベートで宣言したものをどうしても他のDLLからアクセスしたいのであれば、リフレクションを使うことで解決することはできますが・・・

参考URL:
http://www.atmarkit.co.jp/fdotnet/dotnettips/359callbyname/callbyname.html
回答No.2

とりあえずこういう場合はProtedで宣言して、 プロジェクト2に、そのクラスを継承したクラスを作成し、 そこでPublicで、Override(できたっけ?)または別名でプロパティ公開というのが一番無難のような気がします。 あと、Global変数という言い方が気になるのですが、 その変数ってModuleで宣言しているものではないですよね?

回答No.1

可視性は作成時に完全に決定されるため,変更はできません。 VB2008においては,InternalAssemblyTo属性を認識するため,特定のアセンブリにのみFriendスコープを開放できますが……。 設計レベルで見直しを行うことをお勧めします。

関連するQ&A