отправка коллекции с объектом в другой список - PullRequest
2 голосов
/ 23 марта 2012

У меня есть статический метод, который возвращает меня, так как его имя говорит данные из модели предметной области.

public static List<PropertyViewModel> FromDomainModel(List<Property> x)
{
   List<PropertyViewModel> dataVm = new List<PropertyViewModel>();

   foreach (Property p in x)
   {
       dataVm.Add(new PropertyViewModel(p));
   }
   return dataVm;
}

Ниже приведена модель, которая над FromDomainModel вызывает .... другие свойства ...

public List<Photo> Photos { get; set; }

и первый конструктор

public PropertyViewModel(Property x)
{
    Id = x.Id;
    ...
    List<Photo> Photos = new List<Photo>();
    foreach (var item in x.Photos)
    {
       Photos.Add(item);
    }
}

В режиме отладки у меня есть коллекция фотографий, пока она не достигнет строки в методе FromDomainModel ()

 List<PropertyViewModel> dataVm = new List<PropertyViewModel>();

при отладке в строке dataVm.Add(new PropertyViewModel(p)); p на самом деле правильно хранит коллекцию.Вопрос в том, почему не передается внутри списка dataVm.

Ответы [ 2 ]

6 голосов
/ 23 марта 2012

Вы скрываете свойство Photos, объявляя локальную переменную с тем же именем в этой строке:

List<Photo> Photos = new List<Photo>();

Используя имя типа List<Photo> перед именем Photos, вы объявляетеновая переменная, которая скрывает свойство.

Вы можете исправить это, используя фактическое свойство:

Photos = new List<Photo>();

или, если быть более точным:

this.Photos = new List<Photo>();
1 голос
/ 23 марта 2012

В конструкторе PropertyViewModel вы заполняете локальный список объектов Photo, затем при выходе из конструктора эта коллекция будет потеряна.Похоже, вы вместо этого хотите создать коллекцию Photo для класса PropertyViewModel, заполненного

, то есть вместо:

 List<Photo> Photos = new List<Photo>();

у вас не должно быть локальной (для конструктора) коллекции Photos, а вместо этого простоиспользовать свойство PropertyViewModel:

public class PropertyViewModel  
{  
  public List<Photo> Photos { get; private set; }  

  public PropertyViewModel()  
  {  
    ...  
    Photos = new List<Photo>();  
    ...  
  }  
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...