2012-03-23 46 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>(); 
    ... 
    } 
} 
相關問題