2012-03-23 45 views
2

我有静态方法返回我的名字说从域模型的数据。发送收集与对象到另一个列表

​​

贝娄是视图模型这上面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中传递。

回答

6

你通过声明一个局部变量在这条线的同名隐藏属性图片:

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

通过在名称Photos之前使用类型名称List<Photo>,您声明了隐藏该属性的新变量。

您可以通过使用实际的属性解决这个问题:

Photos = new List<Photo>(); 

,或者是更加具体:

this.Photos = new List<Photo>(); 
1

在PropertyViewModel构造函数中,您正在填充Photo对象的本地列表,然后当您离开构造函数时,集合将会丢失。它看起来像你而是想将照片集对填充

的PropertyViewModel类,即而不是:

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

你不应该有一个地方(在构造函数)的照片集,但实际上只是使用的属性PropertyViewModel:

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

    public PropertyViewModel() 
    { 
    ... 
    Photos = new List<Photo>(); 
    ... 
    } 
} 
相关问题