- - PR -
複数プロジェクトでのグローバル変数
«前のページへ
1|2|3
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2003-12-08 10:18
お世話になっております。
皆様、返信ありがとうございます。 非常に助かっています。 私のやりたかったことはプロジェクトAで作成したクラスを プロジェクトBで使用したいという事であり、これは具体的に いいますと、ログインユーザの情報をプロジェクトAで作成している のですが、この情報はアプリケーション全体で共通に使用したい為、 プロジェクトB(パッケージのカスタマイズ部分)で参照しようと していたのです。 ただ、皆様の意見を聞いていると、設計の段階から見直さないと根本的な 解決にはならないのかもしれません・・・。 もともと全てを同じプロジェクトで作っており、一通り動作確認まで 終わってから、カスタマイズ部分を別プロジェクトにしようとしたのが まずかったですね。 Jittaさんに紹介していただいたサンプルを使うと ログイン情報はプロジェクトBで参照することができました。 この方法で進めていこうか、あるいは他のやり方で再設計して 行うか、まだ決めきれていません・・・。 | ||||
|
投稿日時: 2003-12-08 10:54
私は「共通クラス」を作って、そこで定義していますよ。で、オブジェクトはセッション変数に入れています。そうすると、全てのプロジェクトは共通クラスを参照し、セッション変数からインスタンスを取り出せばよく、プロジェクトのインスタンス同士で受け渡しをする必要がなくなります。 | ||||
|
投稿日時: 2003-12-08 11:40
お疲れ様です。
Jittaさん、早々にお返事いただきありがとうございます。 セッション変数というのはVB.NETではどれにあたるのでしょうか? Jittaさんに紹介していただいたサンプルで言うと 『CommonLibrary』にあたるのでしょうか? | ||||
|
投稿日時: 2003-12-08 13:29
ごめんなさい、別のスレッドと混同してました。「セッション変数」を「アプリケーション変数」に改めます。詳細はMSDNを見てください。 | ||||
|
投稿日時: 2003-12-08 15:50
Aのクラスをsingletonクラスとして実装し、 コンストラクタをプライベートにして、 スタテックInstanceプロパティを通して BからAのクラスのインスタンスにアクセス するというのはいかがでしょうか? 補足〜VB.NETへ適当に書換えて下さい。 この例は.NET SDKを使っていますが、VisualStudioに移行可能と思います。 // file : A.cs ---------- using System; class Astart { public static void Main() { int userid = A.Instance.userinfo; Console.WriteLine("Call from A: {0}", userid); # if FIRSTCOMPILE != true B testB = new B(); C testC = new C(); # endif Console.ReadLine(); } } //singleton pattern public class A { public readonly int userinfo; private A() { userinfo = 12345; } public static A Instance { get { if(a == null) a = new A(); return a; } } private static A a = null; } // file : B.cs ---------- using System; public class B { public readonly int userid; public B() { userid = A.Instance.userinfo; Console.WriteLine("Call from B: {0}", userid); } } // file : C.cs ---------- using System; public class C { public readonly int userid; public C() { userid = A.Instance.userinfo; Console.WriteLine("Call from C: {0}", userid); } } rem build.bat ---------- echo off echo building files... cls echo building A.exe for the 1st time ... csc /define:FIRSTCOMPILE A.cs echo building B.dll... csc /r:A.exe /t:library /out:B.dll B.cs echo building C.dll... csc /r:A.exe /t:library /out:C.dll C.cs echo building A.exe... csc /r:B.dll;C.dll A.cs echo Done! [ メッセージ編集済み 編集者: iStation 編集日時 2003-12-12 12:04 ] |
«前のページへ
1|2|3