2012-03-23 8 views
2

ドメインモデルからのデータを示す名前として私を返す静的メソッドがあります。オブジェクトを含むコレクションを別のリストに送信する

​​

ベローは、私がいるデバッグモードで ....他のプロパティを呼び出すFromDomainModel上記のviewmodel ...

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>(); 
    ... 
    } 
} 
関連する問題