- PR -

コードビハインドされたファイルから、静的メンバを呼び出せない

投稿者投稿内容
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2005-10-20 17:35
Global が属する名前空間と test.aspx.cs が属する名前空間は何ですか?
違うなら、using(C#なら) するかフルネームを書いてください。
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2005-10-20 17:40
VS.NETを使ってないということは、csファイルはコマンドラインでコンパイルして
いるんでしょうか?
この場合どうやってコンパイルしてます?
もし二つのcsファイルを別々のdllにコンパイルしているんだったら、それは
見えなくて当然のように思います。
コンパイル時に1つのdllにしてしまえば見えるかな?

#普通の人がやってないような構成で動かそうとしているのであれば、質問時に
 そのあたりをきちんと説明しないと当然ながら答えは返ってきませんよ。
Dr.Mancini
常連さん
会議室デビュー日: 2003/01/23
投稿数: 35
投稿日時: 2005-10-20 18:19
度々のご回答、本当に感謝します。

> Global が属する名前空間と test.aspx.cs が属する名前空間は何ですか?
> 違うなら、using(C#なら) するかフルネームを書いてください。
>
現状ですと、以下のようになります。
■Global
System;
System.Web;
System.Web.SessionState;
System.Web.Mail;
System.Text.RegularExpressions;

■test.aspx.cs
System
System.Data
System.Data.SqlClient
System.Web
System.Web.SessionState
System.Web.UI
System.Web.UI.WebControls



> VS.NETを使ってないということは、
> csファイルはコマンドラインでコンパイルしているんでしょうか?
> この場合どうやってコンパイルしてます?
>
任意でのコンパイルはしていませんが・・・

> #普通の人がやってないような構成で動かそうとしているのであれば、質問時に
>  そのあたりをきちんと説明しないと当然ながら答えは返ってきませんよ。
>
申し訳ないございません。
普通の構成だと思っていたのですが、そうでもないのでしょうか。
これまで、アプリケーション内で定数などを参照する場合、
Application変数を使っており、この際には難なく参照できていました。
それを静的メンバに変えたところ、今回のような現象に遭遇してしまいました。


葉瀬崎浩樹
大ベテラン
会議室デビュー日: 2005/06/28
投稿数: 115
お住まい・勤務地: 兵庫県
投稿日時: 2005-10-20 18:32
こんにちは。
毎度おなじみ横槍です。

引用:

Dr.Manciniさんの書き込み (2005-10-20 18:19) より:
> Global が属する名前空間と test.aspx.cs が属する名前空間は何ですか?
> 違うなら、using(C#なら) するかフルネームを書いてください。
>
現状ですと、以下のようになります。
■Global
System;
System.Web;
System.Web.SessionState;
System.Web.Mail;
System.Text.RegularExpressions;

■test.aspx.cs
System
System.Data
System.Data.SqlClient
System.Web
System.Web.SessionState
System.Web.UI
System.Web.UI.WebControls


あぅ。
それはクラスの属している名前空間ではなく、
そのクラス内のソースにおいて、
「フルネームを打ち込むのが面倒だから、省略する名前空間の宣言」です。。

コード:
namespace xxxx //←属する名前空間はこっちです。
{
  class test()
  {
  }
}


これで、xxxxという名前空間内のtestクラスという意味になります。
testクラスを、別の名前空間から利用するときは、xxxx.test と書く必要があります。
別のクラスで使用する際に、"xxxx"といちいち打つのが面倒な時などに、
ファイルの先頭の、using句で、名前空間の省略を行います。

#面倒だから省略すると言うのは、言葉のあやですが。
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2005-10-20 18:46
引用:

Dr.Manciniさんの書き込み (2005-10-20 18:19) より:
> VS.NETを使ってないということは、
> csファイルはコマンドラインでコンパイルしているんでしょうか?
> この場合どうやってコンパイルしてます?
>
任意でのコンパイルはしていませんが・・・


コードビハインドの指定ってどうやってますか?
※aspxファイルでの継承クラスやらソースやらの指定です。

ソースで指定する場合って、参照とかでややこしいルールがあったりしましたっけね?
なんかいろいろあるような気もするんですが、やったことないのでよく知りません。
Dr.Mancini
常連さん
会議室デビュー日: 2003/01/23
投稿数: 35
投稿日時: 2005-10-20 19:10
> それはクラスの属している名前空間ではなく、
> そのクラス内のソースにおいて、
> 「フルネームを打ち込むのが面倒だから、省略する名前空間の宣言」です。。
>
これは失礼しました。わかりやすい解説ありがとうございます。

しかし、Globalクラスは何処の名前空間にも属させていません。
以下記事を参考にしながら書いたのですが・・・。
http://www.atmarkit.co.jp/fdotnet/dotnettips/122globalobj/globalobj.html


> コードビハインドの指定ってどうやってますか?
> ※aspxファイルでの継承クラスやらソースやらの指定です。
>
ページ先頭に、以下の記述をしております。

<%@ Page Inherits="test1" Src="test.aspx.vb" %>


きくちゃん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 854
お住まい・勤務地: 都内某所
投稿日時: 2005-10-20 19:12
Dr.Manciniさん、こんばんは。

引用:

任意でのコンパイルはしていませんが・・・


コードビハインドの場合、その、ビハインドのソースは自分でコンパイルして、DLLの形態で配置する必要があります。

参考リンク↓

Visual Basic および Visual C# の概念 - Web フォームのコード モデル

[INFO] ASP.NET コード ビハインド モデルの概要

引用:

普通の構成だと思っていたのですが、そうでもないのでしょうか。


VisualStudio.NET などの IDE を使わない、というのはレアケースではないかと思います。ですので、最初に明記しておいて欲しかったと。
まあ、IDE を使っていれば、恐らく今回のような問題にぶつかる事も無かったかも知れません。
Dr.Mancini
常連さん
会議室デビュー日: 2003/01/23
投稿数: 35
投稿日時: 2005-10-20 19:23
> コードビハインドの場合、その、ビハインドのソースは自分でコンパイルして、
> DLLの形態で配置する必要があります。
>
そうでしたか・・・自分なりにも調べてみましたが、初めて知りました。


> VisualStudio.NET などの IDE を使わない、
> というのはレアケースではないかと思います。
> ですので、最初に明記しておいて欲しかったと。
>
私の前提情報不足だったため、皆様に無用な手間と時間を費やさせてしまい、本当に申し訳ない限りです。
皆様、ご多忙のところ本当にありがとうございました。

スキルアップ/キャリアアップ(JOB@IT)