C# 正在将包含对象的集合发送到另一个列表中

C# 正在将包含对象的集合发送到另一个列表中,c#,model-view-controller,oop,C#,Model View Controller,Oop,我有一个静态方法,它返回我,因为它的名称表示来自域模型的数据 public static List<PropertyViewModel> FromDomainModel(List<Property> x) { List<PropertyViewModel> dataVm = new List<PropertyViewModel>(); foreach (Property p in x) { dataVm.Add(n

我有一个静态方法,它返回我,因为它的名称表示来自域模型的数据

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;
}
来自DomainModel的公共静态列表(列表x) { List dataVm=新列表(); foreach(x中的属性p) { Add(新属性viewmodel(p)); } 返回dataVm; } 下面是上面从DomainModel调用的viewmodel ……其他财产

public List<Photo> Photos { get; set; }
公共列表照片{get;set;}
第一个承包商

public PropertyViewModel(Property x)
{
    Id = x.Id;
    ...
    List<Photo> Photos = new List<Photo>();
    foreach (var item in x.Photos)
    {
       Photos.Add(item);
    }
}
公共属性视图模型(属性x)
{
Id=x.Id;
...
列表照片=新列表();
foreach(x.Photos中的变量项)
{
照片。添加(项目);
}
}
在调试模式下,我收集照片,直到它到达FromDomainModel()方法中的行

List dataVm=newlist();
在第
dataVm.Add行中调试(newpropertyviewmodel(p))
p实际上正确地保存了集合。
问题是为什么不在list dataVm中传递。

在PropertyViewModel构造函数中,您正在填充照片对象的本地列表,然后在离开构造函数时,该集合将丢失。看起来您希望针对填充的PropertyViewModel类收集照片

i、 e.而不是:

 List<Photo> Photos = new List<Photo>();
List Photos=newlist();
您不应该有本地(对于构造函数)照片集合,而应该使用PropertyViewModel的属性:

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

  public PropertyViewModel()  
  {  
    ...  
    Photos = new List<Photo>();  
    ...  
  }  
}
公共类属性viewmodel
{  
公共列表照片{get;private set;}
公共属性视图模型()
{  
...  
照片=新列表();
...  
}  
}

通过在此行声明同名的局部变量,您隐藏了属性照片:

List<Photo> Photos = new List<Photo>();
或者,更具体地说:

this.Photos = new List<Photo>();
this.Photos=新列表();
Photos = new List<Photo>();
this.Photos = new List<Photo>();