2016-12-07 2 views
0

私はオブジェクトのリストを使用したい小さなMVC Webアプリケーションを持っていますが、約20個しか関係がないためDBを設定したくありません。私の考えは、私がコントローラに渡したデータに基づいて実行時にこれらのリストを作成することです。 は、だから私は私のモデルクラス「ハイカー」の一環として、それが呼び出されると、それは私が持っているすべてのエントリのリストを返す必要がありますMVC - モデルクラスに属するメソッドが "型として使用されています"

public List<Hikers> enterHikers() 
     { 
      List<Hikers> hikersList = new List<Hikers> 
      { 
      new Hikers("name1", "surname1", "email1"), 
      new Hikers("name2", "surname2", "email2") 
      }; 
     return hikersList; 
    } 

ハイカークラスのコンストラクタを呼び出し、このメソッドを作成しました。しかし、私はこのようなコントローラからそれを呼び出すしようとすると:

List<MVC.Models.Hikers> hikerlist = new Models.Hikers.enterHikers(); 

私はエラーが出る「(MVC.Models.Hikers.enterHikersを) 『メソッド』ですが、 『タイプ』のように使用されます」。誰かがそれを修正し、コントローラから自分のデータにアクセスさせる方法を知っていますか?どうもありがとう。

+0

'public static List enterHikers'に変更してください。これはうまくいくはずです。静的メソッドはインスタンス化を必要とせず、代わりに直接使用できます。 –

答えて

1

機能をstaticにする必要があります。

public static List<Hikers> enterHikers() 
{ 
    return new List<Hikers> 
    { 
     new Hikers("name1", "surname1", "email1"), 
     new Hikers("name2", "surname2", "email2") 
    } 
} 

、それが好きで使用します。

List<MVC.Models.Hikers> hikerList = Models.Hikers.enterHikers(); 

よう哲也が言った、あなたは静的メソッドをインスタンス化する必要はありませんこの方法、あなたはそれらを直接使用することができます。あなたのコードに

+0

ありがとう、これは私の問題を解決! – Jozef

2

単純な変更は、それはあなたのコードと異なる方法

List<MVC.Models.Hikers> hikerlist = (new Models.Hikers()).enterHikers(); 

問題を解決するのだろうか?

明らかに、newを使用して型を作成することができます。あなたのコードは、あなたが望むものではないメソッドのインスタンスを作成しようとしています。そのメソッドはインスタンスメソッドであるため、アクセスできません。

したがって、タイプHikersのインスタンスを作成し、そのインスタンスの 'enterHikers`メソッドを呼び出すだけです。

+0

エラーの説明をありがとうが、変更後、 "'MVC.Models.Hikers'に0引数を取るコンストラクタが含まれていないというエラーが表示されています。結局、私は静的関数を使うことにしました。それは私の問題を解決しました。 – Jozef

関連する問題