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>();