2017-08-02 6 views
0

私はクラスを持っているので、リストでそのオブジェクトをボタンで生成したい。ここ がクラスである:メソッドを使用してオブジェクトのリストを生成する方法は?

public class player : Form2 
    { 
     private List<player> players = new List<player>(); 
     private string name { get; set; } 
     private System.Drawing.Color color { get; set; } 

     public void playergenerator(string myname, System.Drawing.Color myColor) 
     { 
      players.Add(new player() { name = myname, color = myColor }); 
     } 
} 

問題は、私は、既存のオブジェクトなしplayergeneratorを呼び出すことはできませんが、私は、リスト内のすべてのオブジェクトを生成します。

playergeneratorへのお問い合わせは問題ありませんか?

また、オブジェクトを生成するために派生クラスを使用しようとしましたが、いくつかのスコープに問題がありました。

も作ってみましたplayergenerator静的しかし、私はエラーに直面していました:

an object reference is required for the nonstatic field method or property

ので、私は行われています。私はそれについて何もできません。

help !!!!!!

p.s:プログラムはWinフォーム

+0

'playergenerator'メソッドを出してください'player'クラスの側に... –

+0

プレーヤーの中のプレーヤーのリスト?私はかなり理解していない – EpicKip

+0

私はそれを取ることができます。ほとんどすべてのプログラムでアクセスしたいと思います。@MightyBadaboom – Aryan

答えて

1

で書かれているプロパティname、およびcolorで、新しいクラスPlayerModelを作成します。あなたのplayerクラスは、だから私は解決策を提案するビジネスルールと状態(プロパティ)

private List<PlayerModel> players = new List<PlayerModel>(); 
+0

それはoopのルールに対してではないですか?私は方法でWindowsフォームアプリケーションを使用しています – Aryan

+0

いいえ@ Vladoは、あなたが良いOOPデザインであるMV *パターンに従うことを提案しています。あなたがここで行ったことは、自分のモデルをあなたのビュー(パブリッククラスプレーヤー:Form2)に融合させたものです。それらは別々にする必要があります。おそらく、すべてのプレーヤーの中にプレーヤーのリストが必要なわけではありません。私はあなたが探しているのは、playergeneratorメソッドが静的であることと、それが生成するリストを返すことです。それは良い出発点です。 –

+0

実際、あなたの経験に基づいて、@raichiksソリューションは実装が簡単です。そのことを理解したら、基になるList を直接公開しないで隠すことをお勧めします.PlayerにIList&IEnumerable –

0
//Declare your player list inside your form 
private List<Player> players = new List<Player>(); 

//Make player a CLASS 
public class Player 
{ 
    public string name { get; set; } 
    public System.Drawing.Color color { get; set; } 

    //Declare your class CONSTRUCTOR, like this 
    public Player(string name, System.Drawing.Color color) 
    { 
     this.name = name; 
     this.color = color; 
    } 
} 

//NOW, this will work 
public void playergenerator(string myname, System.Drawing.Color myColor) 
{ 
    players.Add(new Player(myname, myColor)); 
} 
0

であなたのUI(Formクラス)とプレーヤモデルがモデルであるクラスになります。

public class player 
{ 
    public string name { get; set; } 
    public System.Drawing.Color color { get; set; } 
} 

次その後、選手の追加

public static class Players 
    { 
     private static List<player> _players; 
     public static List<player> players 
     { 
      get { return _players; } 
      set { _players = value; } 
     } 
     public static void playergenerator(string myname, System.Drawing.Color myColor) 
     { 
      if (players == null) 
       players = new List<player>(); 
      players.Add(new player() { name = myname, color = myColor }); 
     } 
    } 

を生成する選手のリストについては、クラスを作成プレーヤー定義するには、クラスを作成します。選手のリストを

Players.playergenerator("playgirl", Color.AliceBlue); 

にしてアクセス

List<player> currentPlayers = Players.players; 
関連する問題