2012-04-09 20 views
1

私はクラス、フォーム、モデルという名前のプロジェクトにフォルダを作成しました。 \モデル\で自分のパブリックメソッドにアクセスするにはどうすればよいですか?

ABC 
    Classes 
    Forms 
    Models 

、私は)GetApplications(という名前のパブリックメソッドが含まれていApplicationModel.csという名前のクラスを、持っている:

は、フォルダの階層があるので、のは、私のプロジェクトは、ABCという名前で言ってみましょう。

using ABC.Models; 
:私は他の場所で同じABCプロジェクト内からそのメソッドを呼び出したときに

はしかし、私は私が追加した

「名 『GetApplications』は現在のコンテキスト内に存在しない」、取得します

を呼び出すクラスには違いはありません。私はGetApplications()を右クリックして "解決"が表示されたらうまくいきますが、行ってはいけません。

自分のパブリックメソッドにアクセスするにはどうすればよいですか?

+1

は静的メソッドですすべきですか?そうでない場合は、ApplicationModelのインスタンスを持ってメソッドを呼び出しますか? –

+1

'using'ステートメントはフォルダと直接関係しません。名前空間と関係があります。フォルダ構造と名前空間構造が互いに重なり合うという共通の規約がありますが、これは単なる規約です。どのネームスペースにApplicationModelが属しているのですか?コンパイルエラーが発生しているコールサイトを表示できますか? – phoog

+1

コードはどこですか? –

答えて

5

GetApplications()の定義とそれを呼び出すようにしようとのコードを見て参考になるが、私はそれがどちらかだと仮定staticまたはApplicationModelクラスのインスタンスメソッド。どちらの場合でも、コードでApplicationModelクラスのネームスペースをusingステートメントで認識させることができますが、そのメソッドはそのクラスまたはクラスのインスタンスで呼び出される必要があります。

GetApplications静的メソッド、それはインスタンスメソッドなら

var applications = ApplicationModel.GetApplications(); 

var appModel = new ApplicationModel(); // or, retrieve the instance from elsewhere... 

var applications = appModel.GetApplications(); 

一つの方法または別では、あなたはそれを呼び出すためにGetApplicationsを含むクラスを参照する必要があります。これで問題を解決できない場合は、メソッドの定義と呼び出しコードを含むように質問を編集してください。

+0

これは、 "...現在のコンテキストに存在しません"というエラーを説明しません。 – phoog

+0

@phoog OPがクラスを参照しないでメソッドを呼び出すだけであると仮定するか、そのインスタンスは実際にそのエラーを説明します。あなたのコメントで言及したように、コールサイトを見ることなく、私は問題の原因を推測するだけです。私はOPの精緻化を考慮して、必要に応じて私の答えを編集します。 –

+0

@phoogつまり、OPがローカルで宣言されているかのように、メソッドが 'var x = GetApplications()'として呼び出していると仮定できます。 –

1

静的機能を使用しているような音です。静的キーワードを忘れましたか?

静的関数、クラスから「実行」、ではないオブジェクト:

public static string[] GetApplications() 
+0

これは、 "...現在のコンテキストに存在しません"というエラーを説明しません。 – phoog

1

あなたはそのメソッドをどのように呼び出そうとしているかについていくつかのコードなしで決定的なアドバイスを与えるのは難しいです。私は2つの可能な方法を考えることができます。

  • あなたは方法static
  • を宣言する必要があるか、あなたが呼び出す必要があり、その場合にはApplicationModelクラスApplicationModel.GetApplications())、経由でメソッドを呼び出そうとしているのいずれかオブジェクトのメソッドですが、型を使用しています - この場合は型オブジェクトApplicationModelを宣言/作成し、そのオブジェクトのメソッドを呼び出します。 (例:ApplicationModel model = new ApplicationModel(); model.GetApplications();
+0

これは、 "...現在のコンテキストに存在しません"というエラーを説明しません。 – phoog

1

このクラスは公開されていないようです。

あなたのクラスは

namespace ABC 
    { 
    namespace Models 
    { 
     public class ApplicationModel //class needs to be public is accessed outside the namespace 
     { 

     } 
    } 
    } 
関連する問題