Как мне составить список типов классов, которые имеют свойства? - PullRequest
1 голос
/ 16 декабря 2011

Я хочу создать список класса типов, в котором есть свойства, к которым я могу добавить.

Кроме того, чтобы получить доступ к этим свойствам?

Вот что у меня есть.

public class Class1 
{
    enum Player
    {
        Me,
        Opponent
    }

    public class MovesMade
    {
        Player Peep = new Player { };
        //Other properties here
    }

    List<MovesMade> AllMoves = new List<MovesMade> {};

    public void MyFunc() 
    {
        AlllMoves.Add ??

        if (AllMoves.Peep == Player.Me) {

        } 
    }
}

Ответы [ 3 ]

0 голосов
/ 16 декабря 2011
  1. Ваша собственность плохо заявлена. Вместо

    public class MovesMade
    {
        Player Peep = new Player { };
    }
    

    Do:

    public class MovesMade
    {
        public Player Peep { get; set; }
    }
    
  2. Чтобы добавить новый MovesMade в список, вызовите конструктор:

    AllMoves.Add(new MovesMade());
    
  3. Если вы хотите установить Peep непосредственно при добавлении, либо создайте конструктор, который принимает Player:

    AllMoves.Add(new MovesMade(Player.Opponent));
    

    или используйте инициализатор объекта:

    AllMoves.Add(new MovesMade() { Peep = Player.Opponent });
    
0 голосов
/ 16 декабря 2011

Попробуйте это:

 MovesMade m = new MovesMade();
 m.Peep = new Player();
 m.Peep.Name = "foo";

 AlllMoves.Add(m);

 foreach(var moves in AlllMoves)
 {
    if (moves.Peep.Name = "Jules")
    {
    }
 }
0 голосов
/ 16 декабря 2011

Чтобы сделать свойство класса доступным вне его, отметьте его как публичное.Вот ваш пример, немного измененный, чтобы вы начали.

public class Class1 
{
    public enum Player
    {
        Me,
        Opponent
    }    

    List<MovesMade> AllMoves = new List<MovesMade> {};

    public void MyFunc() 
    {
        MovesMade movesMade = new MovesMade();
        movesMade.Peep = Player.Me;
        AlllMoves.Add(movesMade);

        if (movesMade.Peep == Player.Me) {

        } 
    }
}

public class MovesMade
{
    public MovesMade(){

    }
    public Player Peep { get; set; }
    //Other properties here
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...