将带有对象的集合发送到另一个列表

Bob*_*ock 2 c# oop model-view-controller

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

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;
}
Run Code Online (Sandbox Code Playgroud)

Bellow是以上FromDomainModel调用的viewmodel ....其他属性......

public List<Photo> Photos { get; set; }
Run Code Online (Sandbox Code Playgroud)

和第一个构造函数

public PropertyViewModel(Property x)
{
    Id = x.Id;
    ...
    List<Photo> Photos = new List<Photo>();
    foreach (var item in x.Photos)
    {
       Photos.Add(item);
    }
}
Run Code Online (Sandbox Code Playgroud)

在调试模式下,我收集照片,直到它到达FromDomainModel()方法中的行

 List<PropertyViewModel> dataVm = new List<PropertyViewModel>();
Run Code Online (Sandbox Code Playgroud)

在行dataVm.Add(new PropertyViewModel(p));p中的调试实际上保持正确的集合.问题是为什么没有在列表dataVm里面传递.

Bot*_*000 6

您通过在此行声明具有相同名称的本地变量来隐藏属性Photos:

List<Photo> Photos = new List<Photo>();
Run Code Online (Sandbox Code Playgroud)

通过在名称List<Photo>前使用类型名称Photos,您将声明一个隐藏Property的新变量.

您可以使用实际属性来解决此问题:

Photos = new List<Photo>();
Run Code Online (Sandbox Code Playgroud)

或者,更具体:

this.Photos = new List<Photo>();
Run Code Online (Sandbox Code Playgroud)