2011-07-20 7 views
0

私は.NET 4フレームワークを使用していますが、static functionsを持つstatic classがasp.net Webアプリケーションにあります。異なるクラスライブラリから静的クラスを呼び出すことはできませんか?

私はセカンドクラスのライブラリプロジェクトを持っています。クラスライブラリプロジェクトは、Webアプリケーションで静的メソッドを呼び出す必要があります。 Intellisenseは動作しますが、コンパイラはそれを報告します

"名前[MyClassName]は現在のコンテキストに存在しません"。

私はこの電話をかけることができますか、これは許可されていませんか?

PSでは、静的クラスは/App_Codeフォルダにあります。

ありがとうございます!

+0

Webアプリケーション(ウェブサイトプロジェクトではない)のApp_Codeフォルダにクラスを追加した場合は、プロパティを右クリックしてコンパイルする必要があります(デフォルトではコンテンツとして追加されます)。 Web AppからClass Lib to Web Appに切り替えると、循環参照になります。 – Phill

答えて

1

Webプロジェクトからクラスをリファクタリングすることはできませんか?クラスライブラリからWebプロジェクトを参照するのは厄介です。クラスにWeb固有のコードが含まれていない場合は、言及した他のクラスライブラリにポップするか、新しいクラスを作成します。 MyProject.MyLib.WebのようなWeb固有のライブラリを参照する必要があります。

+0

優れた点。私はサードパーティのCMSを使用しているだけで、私がより広い範囲でやっていることを考えなかった。どちらの方法でも、問題は静的クラスが名前空間にラップされていないという事実に関連していると推測しています。アクセスできないという意味ですか? – Hoppe

0

アクセスしたいクラスを含むプロジェクトへの参照を追加する必要があります。

+0

私はプロジェクト – Hoppe

+0

優秀なポイントへの参照があります。私はサードパーティのCMSを使用しているだけで、私がより広い範囲でやっていることを考えなかった。どちらの方法でも、問題は静的クラスが名前空間にラップされていないという事実に関連していると推測しています。アクセスできないという意味ですか?ありがとう! – Hoppe

+1

名前空間に入れる必要があります。しかし、それが '内部的な 'ものであればアクセスできない。 –

0

クラスの完全な名前(名前空間を含む)を使用していることを確認する必要があります。

また、using directiveを名前空間とともにコードファイルに追加します。

+0

静的クラスは名前空間にラップされません。アクセスできないという意味ですか?それはサードパーティのCMSの一部であり、すでに使用されているので、名前空間にラップすることの意味がわからない。ありがとう! – Hoppe

+1

@Joe - もちろんアクセス可能ですが、そうでなければどのように使用しますか?これはグローバル名前空間にあり、グローバル名前空間の['global ::'](http://msdn.microsoft.com/en-us/library/c3ay4x3d.aspx)の構文を使用してエイリアス化およびアクセスすることができます。 – Oded

0

ターゲットフレームワークが.Net Framework 4.0 Client Profileの場合は.NET Framework 4に変更し、ソリューションを再構築してください。

関連する問題